【发布时间】:2015-11-05 18:15:21
【问题描述】:
string s = "Gewerbegebiet Waldstraße"; //other possible input "Waldstrasse"
int iFoundStart = s.IndexOf("strasse", StringComparison.CurrentCulture);
if (iFoundStart > -1)
s = s.Remove(iFoundStart, 7);
我正在运行 CultureInfo 1031(德语)。
IndexOf 将 'straße' 或 'strasse' 与定义的 'strasse' 匹配,并返回 18 作为位置。
Remove 和 Replace 都没有为设置文化带来任何负担。
如果我使用删除 1 个字符删除 6 个字符,如果输入字符串为“strasse”并且“straße”将起作用。 如果输入字符串是“straße”并且我删除了 7 个字符,我会得到 ArgumentOutOfRangeException。
有没有办法安全地删除找到的字符串?有什么方法可以提供 IndexOf 的最后一个索引?我更接近 IndexOf 并且它是引擎盖下的本机代码 - 所以没有办法自己做一些事情......
【问题讨论】:
-
用空字符串替换它怎么样?
s = s.Replace("strasse",""); -
@dotctor 我相信 OP 说
string.Replace没有考虑文化,所以“ss”不匹配“ß”。 -
我在
en-US上运行并遇到了这个问题。问题是 IndexOf 的行为不同。 -
@M.kazemAkhgary 因为英文中的“ß”和“ss”不一样。
-
如果你先做
s.Replace("ß", "ss");会怎么样?
标签: c# exception indexof currentculture