Pet*_*etr 20 c# string parsing
我发现了一个有趣的错误,甚至可能在.net中(还没有尝试过单声道).
IndexOf() string实例的方法是返回某些特殊符号的有符号值(-1或更低),
例如,我有一个字符串,其中包含一些特殊的unicode字符,这个字符串里面的某个地方是我正在寻找的冒号.Calling IndexOf(" :")对于肯定包含" :"返回的签名值的行
我会尝试在这里粘贴这个字符串,但是给定特殊符号可能很难:
hitchcock.freenode.net 322 petan #hobbiton 5 :????? > Good luck axa!
有办法解决这个问题吗?
DGi*_*bbs 10
IndexOf() 默认情况下进行文化不变的比较.
特别注意这一点:
.NET 4 Beta 1的更新为了保持.NET 4和以前版本之间的高兼容性,我们决定恢复此更改.String的默认部分匹配重载和String和Char的ToUpper和ToLower方法的行为现在与.NET 2.0/3.0/3.5中的行为相同..NET 4 Beta 1中存在对原始行为的更改.对于可能导致的任何临时混淆,我们深表歉意. 我们继续建议明确关于所需的字符串比较行为,方法是始终为接受它的String上的方法指定StringComparison值.
您应该使用String.IndexOf方法(String,Int32,StringComparison)重载:
例如:
IndexOf(":", StringComparison.Ordinal);
Run Code Online (Sandbox Code Playgroud)
我看到有些人出于某种原因想要关闭这个问题,所以我会在这之前回答:-)
感谢@vcsjones的评论中的答案,它似乎与语言环境设置有关,可以通过更改来修复
text.IndexOf(" :")
至
text.IndexOf(" :", StringComparison.Ordinal)
这可能是一个糟糕的答案,但总比没有好......