小编kne*_*sis的帖子

someString.IndexOf(someString)在.NET 4下返回1而不是0

我们最近将所有项目从.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的索引.

更新:

将原始问题字符串更改为每个实际字符清晰可见的字符串(使用转义).这有点简化了问题.

c# string .net-4.0 .net-3.5

56
推荐指数
2
解决办法
2485
查看次数

标签 统计

.net-3.5 ×1

.net-4.0 ×1

c# ×1

string ×1