C#:从字符串中删除特定于语言的符号

时间:2009-04-18 09:47:10

标签: c#

为了举例,我们假设我正在解析一些用德语写的文本。这意味着它包含ü或Ö等符号。问题是当所有德国特定符号都呈现为空方格时。请看一下这张图片:

Image http://img8.imageshack.us/img8/7502/93341046.png

因为我不知道这个符号是ü还是Ö我想用“。”代替它。 (点)。所以上图中的字符串应该变成“Osnabr.ck”。我怎么做? 任何帮助将不胜感激!

最诚挚的问候, 基里尔

3 个答案:

答案 0 :(得分:6)

您可以使用正则表达式替换您不想要的任何字符。只需将您想要的字符放在否定集中:

str = Regex.Replace(str, "[^0-9A-Za-z _]", ".");

您应该查看用于解码文本的编码。看起来您没有使用与用于编码文本相同的编码,因为字符没有正确显示。

答案 1 :(得分:2)

如果你想看到实际的字符(我注意到你在visual studio的即时窗口中显示了这个值),你需要使用一个可以显示字符的字体。方块的存在意味着您使用的字体不包含与这些字符匹配的字形。您可以在选项对话框中更改Visual Studio各个部分中使用的字体。

Some more detail in this question here

答案 2 :(得分:-1)

字符串类有一个Replace方法。用其他东西替换单个字符最简单:

InnerText.Replace("ü", ".");

您可以通过链接替换来同时更改多个字符:

InnerText.Replace("ü", "[ue]").Replace("Ö", "[Oe]");