【发布时间】:2012-02-13 12:40:24
【问题描述】:
我有字符串“Ärger,-Ökonom-i-Übermut-ẞ-ß”,当我运行 IndexOf("--") 时,我得到 23 的结果。如果我在同一字符串上使用 Replace,则不会被替换.
我不明白发生了什么,所以有人可以解释一下这个问题吗?应用程序文化设置为克罗地亚语,不是德语,框架版本为 3.5。
将文化更改为德语 (de-DE) 并不会改变这种奇怪的行为。
这是调试器的截图:
【问题讨论】:
-
String中没有“--”对吗?
-
对我来说听起来像是一个错误。我可以用 .Net 3.5 重现该问题,但它在 .Net 4.0 中返回 -1。
-
恐怕 U+1E9E 根据 .NET 3.5 是未定义的,因为在 Unicode 4.0(或任何版本的 Unicode .NET 3.5 使用)中不存在此字符。这是一个相当新的添加(德语 ß 的大写版本)。所以 IndexOf 函数会忽略它。如果您对文本有任何控制权,则可以将字符更改为 ß 或 SS,无论哪个更合适。当然更好的解决方案是将.NET升级到v4.0!
-
@Mr Lister,好的,所以也许这不是错误。我想这取决于一个角度:) 请写下答案,以便我接受。
-
好吧,我真的认为您的评论澄清了这个问题,重要的是 U+1E9E 在 .NET 3.5 中未定义
标签: c# .net cultureinfo indexof