2009-08-13 65 views
8

我需要替換字符串中口音的英語等同如何更換在.NET口音(德國)

例如

ä= AE

O = OE

O =奧斯特

U = UE

我知道從第一帶他們的環,但我不知道更換。

請讓我知道,如果你有一些建議。我在C編碼#

回答

3

我想不出任何自動的方式來做到這一點,所以我相信你不得不手動做。

即。

string GermanString = "äö"; 
GermanString = GermanString.Replace("ä", "ae"); 
GermanString = GermanString.Replace("ö", "oe"); 

有幾個字符?所有的元音,大寫和小寫,所以,10?不應該是太多的工作。

0

如何使用與string.replace:

string germanText = "Mötörhead"; 
string replaced = germanText.Replace("ö", "oe"); 

(好吧,不是一個真正的德語詞,但我無法抗拒)

你可以連續調用替換這樣

someText.Replace("ö", "oe").Replace("ä", "ae").Replace("ö", "oe")... 
+4

它實際上公司的M ** **Øtörhead;) – 2014-10-28 16:42:52

8

是不是隻想把德文元音變換到雙字母(非變元)變體的映射?幹得好;未經測試,但它處理所有德語變音。

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; 
} 
28

如果您需要使用這個在更大的字符串,以Replace()多次調用可以得到低效率很快。你可能會更好重建你的串字符一個字符:

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

var res = germanText.Aggregate(
       new StringBuilder(), 
       (sb,c) => 
       { 
       string r; 
       if(map.TryGetValue(c, out r)) 
        return sb.Append(r); 
       else 
        return sb.Append(c); 
       }).ToString(); 
+3

好的解決方案。我已經擴展它來處理所有的ISO-8859-1:http://codepad.org/dumpGlgg – primo 2017-02-01 09:19:01