我如何在.NET中替换口音(德语)

sub*_*bha 9 c# string diacritics character-encoding

我需要将字符串中的重音替换为英语等价物

例如

ä= ae

ö= oe

Ö=大江

ü=你

我知道将它们从字符串中删除但我不知道更换.

如果您有任何建议,请告诉我.我在C#中编码

dah*_*byk 35

如果你需要在更大的字符串上使用它,多次调用Replace()可能很快就会变得低效.你可能最好逐个字符地重建字符串:

var map = new Dictionary<char, string>() {
  { 'ä', "ae" },
  { 'ö', "oe" },
  { 'ü', "ue" },
  { 'Ä', "Ae" },
  { 'Ö', "Oe" },
  { 'Ü', "Ue" },
  { 'ß', "ss" }
};

var res = germanText.Aggregate(
              new StringBuilder(),
              (sb, c) => map.TryGetValue(c, out var r) ? sb.Append(r) : sb.Append(c)
              ).ToString();
Run Code Online (Sandbox Code Playgroud)

  • 好的解决方案 我已将其扩展为处理所有ISO-8859-1:http://codepad.org/dUMpGlgg (4认同)

Fre*_*abe 10

只想要将德语变音符号映射到双字母(非变音符号)变体吗?干得好; 未经测试,但它处理所有德国变音符号.

String replaceGermanUmlauts( String s ) {
    String t = s;
    t = t.Replace( "ä", "ae" );
    t = t.Replace( "ö", "oe" );
    t = t.Replace( "ü", "ue" );
    t = t.Replace( "Ä", "Ae" );
    t = t.Replace( "Ö", "Oe" );
    t = t.Replace( "Ü", "Ue" );
    t = t.Replace( "ß", "ss" );
    return t;
}
Run Code Online (Sandbox Code Playgroud)


Pau*_*ean 4

我想不出任何自动方法来执行此操作,因此我相信您必须手动执行此操作。

\n\n

IE。

\n\n
string GermanString = "\xc3\xa4\xc3\xb6";\nGermanString = GermanString.Replace("\xc3\xa4", "ae");\nGermanString = GermanString.Replace("\xc3\xb6", "oe");\n
Run Code Online (Sandbox Code Playgroud)\n\n

有多少个字符?所有元音,大写和小写,那么,10?不应该是太多的工作。

\n