2011-05-16 10 views
6

मैं एक स्ट्रिंग में एक उच्चारण-असंवेदनशील प्रतिस्थापन करना चाहता हूं। मैं 'क्लाइंट' से मेल खाता हूं 'इसके विपरीत' और इसके विपरीत।सी # रेगेक्स के साथ एक उच्चारण असंवेदनशील स्ट्रिंग को कैसे प्रतिस्थापित करें?

मेरे कोड इस तरह दिखता है:

Regex reg = new Regex("client"); 
string result = reg.Replace("here goes the content with client and cliënt", "replacementWith"); 

तो, मुझे यकीन है कि 'ग्राहक' मैचों 'ग्राहक' और 'ग्राहक' और इसके विपरीत कर सकता हूँ?

उत्तर

3

आप Regex

Regex reg = new Regex("cli[eë]nt"); // will match both 'client' and 'cliënt' 

में शामिल कर सकते हैं या आप स्ट्रिंग में सभी लहजे निकालें और फिर नियमित अभिव्यक्ति लागू कर सकते हैं।

string test = "here góes the cóntent with client and cliënt"; 

char[] replacement = { 'a','a','a','a','a','a','c','e','e','e','e','i','i','i','i','n','o','o','o','o','o','u','u','u','u','y','y' }; 
char[] accents = { 'à','á','â','ã','ä','å','ç','é','è','ê','ë','ì','í','î','ï','ñ','ò','ó','ô','ö','õ','ù','ú','û','ü','ý','ÿ' }; 


for (int i = 0; i < accents.Length; i++) 
{ 
    test = test.Replace(accents[i], replacement[i]); 
} 

यह बहुत कुशल नहीं है लेकिन टेक्स्ट की थोड़ी मात्रा के लिए काम करेगा।

+0

हालांकि, उच्चारण चिह्नों को अलग करने से पहले अपनी स्ट्रिंग को [यूनिकोड सामान्यीकरण प्रक्रिया] (http://www.regular-expressions.info/unicode.html) के माध्यम से चलाने के लिए सुनिश्चित रहें। – ladenedge

+0

मुझे खेद है, मुझे लगता है कि मैं पर्याप्त स्पष्ट नहीं था। ग्राहक सिर्फ एक उदाहरण था। मैं उच्चारण असंवेदनशील तारों को बदलने का एक सामान्य तरीका चाहता हूं। – Martijn

+1

धन्यवाद, लेकिन दुर्भाग्य से मुझे दस्तावेजों से निपटना होगा। तो एक दस्तावेज़ छोटा हो सकता है, लेकिन यह भी बहुत बड़ा हो सकता है। मैं इस दृष्टिकोण का उपयोग करने पर विचार करूंगा। – Martijn

0

Have a look at this page

ध्यान रखें कि आप हालांकि एक विशिष्ट संस्कृति में काम करने की जरूरत में भालू - कोई मनमाना लहजे बदलने की संस्कृति है, एक संस्कृति ई में के बाद से और ई बराबर माना जा सकता है, किसी अन्य रूप में वे अलग हो सकता है।

+0

मैंने अपने रेगेक्स को 'रेगेक्स रेग = न्यू रेगेक्स ("क्लाइंट", रेगेक्सऑप्शन। इग्नोरकेस | रेगेक्सऑप्शन। कॉल्चरइनविरिएंट) के साथ संशोधित किया है, लेकिन मैंने अपनी संस्कृति निर्दिष्ट नहीं की है। क्या यह जरूरी है? या क्या मैं ऐसी संस्कृति की तलाश करता हूं जहां 'e' और' ë' का मतलब है ..: p – Martijn

+0

क्षमा करें, अधिक पढ़ने पर, ऐसा नहीं लगता है कि संस्कृति इन्विरिएंट पर्याप्त है। मैं आपको बता सकता हूं कि 'तुलनाइन्फो' वर्ग और 'IgnoreNonSpace' विकल्पों का उपयोग करके उचित उच्चारण-असंवेदनशील तुलना कैसे करें, लेकिन Regexs का उपयोग न करें :( –

+0

कोई फर्क नहीं पड़ता, हालांकि प्रयास के लिए Thnx :) – Martijn

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