字符串.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执行文化敏感的比较,而. equals(您使用的with ==)不执行。
因此,如果您有两个字符串,当您逐个字符比较它们时它们是不同的(==返回false),但您的文化认为它们是相等的(startswith返回true),您可以得到这个结果。
编辑如果我用这个来尝试你的示例值:
bool b1 = word1.StartsWith(word2, StringComparison.Ordinal);
bool b2 = word1.Substring(0, word2.Length).Equals(word2, StringComparison.Ordinal);
都返回"True"