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

如何比较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 = 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());