String.StartsWith不能像我期望的那样工作

时间:2011-09-27 15:14:06

标签: c# .net string

string word1 = ""; //see example   
string word2 = "";    
bool b1 = word1.StartsWith(word2);
bool b2 = word1.Substring(0, word2.Length) == word2;

对于某些阿拉伯字符串b1不等于b2? 你能解释一下这种行为吗?

示例:

word1 = ((char)0x0650).ToString()+ ((char)0x0652).ToString()+ ((char)0x064e).ToString();
word2 = ((char)0x0650).ToString()+ ((char)0x0652).ToString();

1 个答案:

答案 0 :(得分:7)

存在差异:.StartsWith执行文化敏感性比较,而.Equals(您使用==)则不会。

因此,如果你有两个字符串,当你逐个字符地比较它们时(==返回false),但你的文化被认为是相同的(startswith返回true),你可以得到这个结果。

修改 如果我尝试使用此示例值:

bool b1 = word1.StartsWith(word2, StringComparison.Ordinal);
bool b2 = word1.Substring(0, word2.Length).Equals(word2, StringComparison.Ordinal);

都返回“True”。