我想知道我是否在 .NET Framework 中发现了错误,或者我是否不明白某些内容。
运行这段代码后:
var text = "مباركُ وبعض أكثر من نص";
var word = "مبارك";
bool exist = text.Contains(word);
int index = text.IndexOf(word);
结果是“exists = true”和“index = -1”
怎么会这样?
Contains对文化不敏感:
此方法执行序数(区分大小写且不区分区域性)比较。
IndexOf文化敏感:
此方法使用当前区域性执行单词(区分大小写和区域性)搜索。
这就是区别。如果你使用
int index = text.IndexOf(word, StringComparison.Ordinal);
那么你会得到一个索引 0 而不是 -1 (所以它与Contains
).
没有文化敏感的超载Contains
;我不清楚你是否可以使用IndexOf
可靠地做到这一点,但是CompareInfo类给some更多的选择。 (我真的不太了解文化比较的细节,尤其是 RTL 文本。我只知道它很复杂!)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)