是否有String.Split()将StringComparison考虑在内?

时间:2015-09-22 10:54:12

标签: .net string unicode equality case-sensitive

Best Practices for Using Strings in the .NET Framework中,我们鼓励在比较字符串时提供正确的StringComparison。我同意这一点,但我发现与其他方法不同,String.Split()实际上没有带比较参数的重载。

是否有相当于String.Split()在框架中的某处进行字符串比较,或者我希望自己编写?

1 个答案:

答案 0 :(得分:5)

  

在框架中的某处是否有String.Split()相当于字符串比较?

没有。那没有。坦率地说,我认为它没有多大意义。如果您在特殊字符上拆分字符串,通常是因为另一个系统向您提供了原始字符串,为什么要在Xx上拆分?通常你不想这样做,.NET也没有提供一种方法来帮助你。

  

我希望自己写一个吗?

嗯,你可以用一些帮助。这是一个不区分大小写的分离器。它仍然需要一些工作,但你可以用它作为起点:

public static string[] Split(string s, params char[] delimeter)
{
    List<string> parts = new List<string>();

    int lastPartIndex = 0;
    for (int i = 0; i < s.Length; i++)
    {
        if (delimeter.Select(x => char.ToUpperInvariant(x)).Contains(char.ToUpperInvariant(s[i])))
        {
            parts.Add(s.Substring(lastPartIndex, i - lastPartIndex));

            lastPartIndex = i + 1;
        }
    }

    if (lastPartIndex < s.Length)
    {
        parts.Add(s.Substring(lastPartIndex, s.Length - lastPartIndex));
    }

    return parts.ToArray();
}