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

Posted

技术标签:

【中文标题】用英语等价物替换德语字符(变音符号、重音符号)【英文标题】:Replace German characters (umlauts, accents) with english equivalents 【发布时间】:2011-11-20 05:21:33 【问题描述】:

将德语字符(变音符号、重音符号)替换为英语对应的字符

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

所以我知道的字符是:

ß 一种 ö ü 一种 Ö ü

目前我有一些手动替换它们的方法:

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

但我希望有一种更简单/更有效的方法。因为我每次运行都会处理数千个字符串,其中 99% 不会包含这些字符。

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

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

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

所以一定有某种转换表已经存在?)

【问题讨论】:

How do I remove diacritics (accents) from a string in .NET?的可能重复 【参考方案1】:

该过程称为删除“变音符号” - 请参阅使用以下代码的 Removing diacritics (accents) from strings:

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。我相信您必须对德语字符进行硬替换才能达到预期的效果。这可能是更可取的方法,因为带有元音变音的单字符德国字母可以映射到非元音变音的两个字符版本。有关解决方案,请参阅 Joe 的 answer 中链接的问题的答案。

以上是关于用英语等价物替换德语字符(变音符号、重音符号)的主要内容,如果未能解决你的问题,请参考以下文章

在 JavaScript 中删除字符串中的重音符号/变音符号

如何从 .NET 中的字符串中删除变音符号(重音符号)?

如何从 .NET 中的字符串中删除变音符号(重音符号)?

sql 数据库将坏字符替换为德语(变音符号)字符

使用正则表达式剥离字符失败,使用带有变音符号,撇号,重音符号等的文字字符

美国布局的变音符号和其他符号的替代键盘映射