我们最近将所有项目从 .NET 3.5 升级到 .NET 4。我遇到了一个关于 .NET 的相当奇怪的问题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.
给我一个 1 的索引,而不是 0。关于这个问题有几点需要注意:
问题似乎与这些连字符有关(第一个字符是 Unicode 软连字符,第二个是常规连字符)。
我已经仔细检查过,这在 .NET 3.5 中不会发生,但在 .NET 4 中会发生。
将 更改
IndexOf()
为进行序数比较可以解决问题,因此由于某种原因,默认的 . 忽略了第一个字符IndexOf
。
有谁知道为什么会这样?
编辑
对不起,伙计们,在原始帖子上做了一些东西,并在那里两次获得了隐藏的破折号。我已经更新了字符串,只要将它粘贴到正确的编辑器中,它就会返回 1 而不是 2 的索引。
更新:
将原始问题字符串更改为每个实际字符都清晰可见的字符串(使用转义)。这稍微简化了问题。