来自德国字符串的IndexOf的奇怪结果

时间:2012-02-13 12:40:25

标签: c# .net cultureinfo indexof

我有字符串“Ärger,-Ökonom-i-Übermut-ẞ-ß”,当我运行IndexOf(“ - ”)时,我得到23的结果。如果我在同一个字符串上使用Replace被取代。

我不明白发生了什么,所以有人可以就这个问题说清楚吗? Application Culture是在Croatian上设置的,它不是德语,框架版本是3.5。

将文化转变为德语(de-DE)并不会改变这种奇怪的行为。

以下是调试器的屏幕截图:

enter image description here

2 个答案:

答案 0 :(得分:3)

由于利斯特先生不想要他当之无愧的赞成票,我会在此贴上他的评论,并接受回答。

  

根据.NET 3.5,我担心U + 1E9E未定义,因为   Unicode 4.0中不存在此字符(或任何版本的   Unicode .NET 3.5使用)。这是一个相当新的补充(大写版本   德国ß)。因此IndexOf函数忽略它。如果你有任何   控制文本,你可以将角色改为ß或SS,   什么更合适。当然更好的解决方案是   将.NET升级到v4.0!

答案 1 :(得分:1)

IndexOf如果不另外说明,则使用当前的文化:

  

此方法执行一个单词(区分大小写且对文化敏感)   使用当前文化进行搜索。

Replace使用序数比较:

  

此方法执行序数(区分大小写和   文化不敏感)搜索以查找oldValue