在Best Practices for Using Strings in the .NET Framework中,我们鼓励在比较字符串时提供正确的StringComparison
。我同意这一点,但我发现与其他方法不同,String.Split()
实际上没有带比较参数的重载。
是否有相当于String.Split()
在框架中的某处进行字符串比较,或者我希望自己编写?
答案 0 :(得分:5)
在框架中的某处是否有
String.Split()
相当于字符串比较?
没有。那没有。坦率地说,我认为它没有多大意义。如果您在特殊字符上拆分字符串,通常是因为另一个系统向您提供了原始字符串,为什么要在X
和x
上拆分?通常你不想这样做,.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();
}