C# 拆分、排序和合并字符串
如何比较C#中的两个字符串,然后在分隔符上拆分、合并(删除重复项)并对项目排序C# 拆分、排序和合并字符串,c#,C#,如何比较C#中的两个字符串,然后在分隔符上拆分、合并(删除重复项)并对项目排序 var str1 = "123ABC;789XYZ"; var str2 = "456CDE;123ABC;012ABC"; var result = str1.SplitSortAndMerge(str2); // => result = "012ABC;123ABC;456CDE;789XYZ" 这应该对你有帮助 var str2 = "456CDE;123ABC;012ABC"; var result
var str1 = "123ABC;789XYZ";
var str2 = "456CDE;123ABC;012ABC";
var result = str1.SplitSortAndMerge(str2); // => result = "012ABC;123ABC;456CDE;789XYZ"
这应该对你有帮助
var str2 = "456CDE;123ABC;012ABC";
var result = string.Join(";",str2.Split(new[]{";"},StringSplitOptions.RemoveEmptyEntries).Distinct().OrderBy(x=>x));
如果需要包含str1,那么
var str1 = "123ABC1";
var result = string.Join(";",str2.Split(new[]{";"},StringSplitOptions.RemoveEmptyEntries).Concat(new[]{str1}).Distinct().OrderBy(x=>x));
基于您在OP中的上一次更新,如果您可以编写一个扩展方法就更好了
public static class Extensions
{
public static string SplitAndSort(this IEnumerable<string> source)
{
var list = source.Where(x=>x!=null)
.SelectMany(c=>c.Split(new[]{";"},StringSplitOptions.RemoveEmptyEntries))
.Distinct()
.OrderBy(x=>x);
return string.Join(";",list);
}
}
输出
012ABC;123ABC;123ABC1;456CDE
str1
与str2
有什么关系?结果如何?str1是否可以有多个元素?str2
本身会有重复的吗?好的,我编辑了这个问题。比较是在两个字符串上进行的。你所说的“比较”是什么意思?如果str1
不在str2
中会发生什么?它们将合并到结果中(删除重复项)并按字母顺序排序。好的,谢谢。然后,我只需要检查str1和str2是否不为空,以避免NRE。@安德烈莫尔顿实际上就是这样做的,当你发表评论时,他更新了答案:)Thanks@AntoineGriffard请检查扩展方法。它也处理空值。
012ABC;123ABC;123ABC1;456CDE
var str2 = "456CDE;123ABC;012ABC";
var result = string.Join(";",str2.Split(';').Distinct().OrderBy(x => x).ToList());