mir*_*lav 4 .net string unicode equality case-sensitive
在.NET Framework中使用字符串的最佳实践中,我们鼓励StringComparison在比较字符串时提供正确的实践.我同意这一点,但我发现与其他方法不同,String.Split()实际上没有带比较参数的重载.
是否有相当于String.Split()在框架中的某处进行字符串比较,或者我希望自己编写?
是否有相当于
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();
}
Run Code Online (Sandbox Code Playgroud)