2009-08-13 17 views
8

मैं उनके अंग्रेज़ी समकक्षमैं नेट में लहजे (जर्मन)

उदाहरण के लिए

को स्ट्रिंग में लहजे प्रतिस्थापित करने की आवश्यकता कैसे बदलूं

a = ae

o = ँ

o = ँ

ü = ue

मैं सेंट से उनमें से पट्टी पता अंगूठी लेकिन मैं प्रतिस्थापन के बारे में अनजान था।

अगर आपके पास कुछ सुझाव हैं तो कृपया मुझे बताएं। मैं सी #

उत्तर

3

मैं यह करने के लिए किसी भी तरह से स्वचालित नहीं सोच सकते में कोडिंग कर रहा हूँ, इसलिए मेरा मानना ​​है कि आप इसे मैन्युअल रूप से करना होगा।

यानी।

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

कितने अक्षर हैं? सभी स्वर, ऊपरी और निचले मामले में, तो, 10? एक नौकरी की बहुत अधिक नहीं होना चाहिए।

0

कैसे string.Replace उपयोग के बारे में: इस

someText.Replace("ö", "oe").Replace("ä", "ae").Replace("ö", "oe")... 
की तरह बदलें

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

(ठीक है, नहीं एक वास्तविक जर्मन शब्द है, लेकिन मैं विरोध नहीं कर सके)

आप श्रृंखला कॉल कर सकते हैं

+4

यह वास्तव में एम ** ओ ** törhead है;) –

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

संबंधित मुद्दे