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

mir*_*lav 4 .net string unicode equality case-sensitive

.NET Framework中使用字符串的最佳实践中,我们鼓励StringComparison在比较字符串时提供正确的实践.我同意这一点,但我发现与其他方法不同,String.Split()实际上没有带比较参数的重载.

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

Pat*_*man 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();
}
Run Code Online (Sandbox Code Playgroud)

  • 无意中发现[Regex.Split](https://msdn.microsoft.com/en-us/library/8yttk7sy(v = vs.110).aspx)已经提供了所需的功能. (2认同)