我们最近将所有项目从.NET 3.5升级到.NET 4.我遇到了一个相当奇怪的问题string.IndexOf().
我的代码显然略有不同,但在调查问题的过程中,我发现调用IndexOf()一个字符串本身返回1而不是0.换句话说:
string text = "\xAD\x2D"; // problem happens with "-dely N.China", too;
int index = text.IndexOf(text); // see update note below.
Run Code Online (Sandbox Code Playgroud)
给我一个索引1而不是0.关于这个问题需要注意几点:
问题似乎与这些连字符有关(第一个字符是Unicode软连字符,第二个字符是常规连字符).
我已经仔细检查过,这不会发生在.NET 3.5中,而是发生在.NET 4中.
更改IndexOf()要进行序数比较可以解决问题,因此出于某种原因,默认情况下会忽略第一个字符IndexOf.
有谁知道为什么会这样?
编辑
对不起,伙计们,在原帖上做了一些东西,并在那里得到了隐藏的短跑两次.我已经更新了字符串,只要将其粘贴到正确的编辑器中,就应该返回1而不是2的索引.
更新:
将原始问题字符串更改为每个实际字符清晰可见的字符串(使用转义).这有点简化了问题.