当Unicode 0xFFFD在字符串中时,IndexOf匹配 - bug还是功能?

时间:2014-05-20 22:15:13

标签: c# indexof

在VS2012的C#中,代码如下:

string test = "[ " + (char)0xFFFD + " ]";
System.Console.WriteLine("{0}", test.IndexOf("  ") == 1);

导致

True

打印到控制台输出窗口。空格由0xFFFD分隔,但它匹配两个连续的空格。这是预期的结果/功能还是(已知)错误?

1 个答案:

答案 0 :(得分:7)

这是预期的结果。 FFFD是"替换字符"在Unicode中,在任何文化中都没有意义。 IndexOf忽略其搜索中的任何无意义字符:

  

字符集包括可忽略字符,这些字符是执行语言或文化敏感比较时不考虑的字符。