用英语等价物替换德语字符(变音符号,重音符号)

用英语等价物替换德语字符(变音符号,重音符号)

我需要从各个文本字段中删除任何德语特定字符,以便处理到另一个不接受它们有效的系统。

所以我所知道的人物是:

ßäöüÄÖÜ

目前我有一种手动方式来替换它们:

myGermanString.Replace("ä","a").Replace("ö","o").Replace("ü","u")..... 

但我希望有一种更简单/更有效的方法。 由于我每次运行都会在数千个字符串上执行此操作,其中99%不会包含这些字符。

也许是一种涉及某种CultureInfo的方法?

(例如,根据MS,以下返回的字符串是相等的

 String.Compare("Straße", "Strasse", StringComparison.CurrentCulture); 

所以必须存在某种转换表?)

@ Barry的答案很好,如果你想删除变音符号。

但在德语中通常会替换ü=> ue,ö=> oe等。

这是一个类似问题的链接 。

该过程称为删除“变音符号” – 请参阅使用以下代码从字符串中删除变音符号(重音符号) :

 public static String RemoveDiacritics(String s) { String normalizedString = s.Normalize(NormalizationForm.FormD); StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < normalizedString.Length; i++) { Char c = normalizedString[i]; if (CharUnicodeInfo.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark) stringBuilder.Append(c); } return stringBuilder.ToString(); } 

来自jb http://weblogs.asp.net/fmarguerie/archive/2006/10/30/removing-diacritics-accents-from-strings.aspx提到的文章

 public static String RemoveDiacritics(String s) { String normalizedString = s.Normalize(NormalizationForm.FormD); StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < normalizedString.Length; i++) { Char c = normalizedString[i]; if (CharUnicodeInfo.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark) stringBuilder.Append(c); } return stringBuilder.ToString(); }