我不知道为什么EndsWith返回false。

我有C#代码:

string heading = "yakobusho";
bool test = (heading == "yakobusho");
bool back = heading.EndsWith("​sho");
bool front = heading.StartsWith("yak");
bool other = "yakobusho".EndsWith("sho");
Debug.WriteLine("heading = " + heading);
Debug.WriteLine("test = " + test.ToString());
Debug.WriteLine("back = " + back.ToString());
Debug.WriteLine("front = " + front.ToString());
Debug.WriteLine("other = " + other.ToString());


输出为:

heading = yakobusho
test = True
back = False
front = True
other = True


EndsWith是怎么回事?

最佳答案

第三行中的"​sho"字符串以zero length space开头。 "​sho".Length返回4,而((int)"​sho"[0])返回8203(零长度空间的Unicode值)。

您可以使用其十六进制代码在字符串中键入它,例如:

"\x200Bsho"


令人讨厌的是,该字符不被视为空格,因此无法使用String.Trim()将该字符删除。

关于c# - 我对String.EndsWith的使用有什么问题?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55046203/

10-13 04:31