字符串.StartsWith并不像我期望的那样工作

本文关键字:工作 期望 StartsWith 字符串 | 更新日期: 2023-09-27 18:10:02

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();

字符串.StartsWith并不像我期望的那样工作

有一个区别:. startswith执行文化敏感的比较,而. equals(您使用的with ==)不执行。

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

编辑如果我用这个来尝试你的示例值:

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

都返回"True"