पहले कर रहे हैं, सभी निकालें विशेष characeters:
var fixedInput = Regex.Replace(input, "[^a-zA-Z0-9% ._]", string.Empty);
// This regex doesn't support apostrophe so the extension method is better
तो यह विभाजित:
var splitted = fixedInput.Split(' ');
विशेष वर्ण को हटाने (जिन्हें आप आसानी से बदल सकते हैं) के लिए एक सरल सी # समाधान के लिए, इस विस्तार विधि (मैं एपोस्ट्रोफ़ी के लिए एक समर्थन जोड़ा) जोड़ें:
public static string RemoveSpecialCharacters(this string str) {
StringBuilder sb = new StringBuilder();
foreach (char c in str) {
if ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || c == '\'') {
sb.Append(c);
}
}
return sb.ToString();
}
तब तो की तरह उपयोग:
var words = input.RemoveSpecialCharacters().Split(' ');
आप surpr हो जाएगा ised पता चला है कि इस विस्तार विधि (निश्चित रूप से और अधिक कुशल तो Regex) बहुत ही कुशल है तो मैं आप इसका इस्तेमाल का सुझाव देंगे;)
अद्यतन
मैं मानता हूँ कि यह एक अंग्रेजी केवल दृष्टिकोण है, लेकिन यह यूनिकोड संगत तुम सब करने की है की जगह है बनाने के लिए:
(c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')
के साथ:
char.IsLetter(c)
कौन सा suppor टी यूनिकोड,।नेट इसके अलावा मामलों
स्रोत
2013-05-24 00:06:11
मेरी सलाह: एक स्पष्ट शाब्दिक व्याकरण को परिभाषित करने से शुरू है और फिर उस व्याकरण कि टोकन के एक अनुक्रम का उत्पादन के लिए एक lexer लिखें। फिर उन टोकन को अस्वीकार करें जो "शब्द" उत्पादन में शामिल नहीं हैं। यह नियमित अभिव्यक्तियों के लिए नौकरी नहीं है। –
मुझे वास्तव में एरिक की प्रतिक्रिया पसंद है। मुझे पता है कि मैं पार्टी के लिए थोड़ा देर हो चुकी हूं, लेकिन यह जाने का सबसे अच्छा तरीका है। –
मैंने उपरोक्त सभी ** डेलीमीटर ** एकत्र किए हैं और मुझे इस परिणाम की तरह कुछ मिला है। स्प्लिट ({"'", "", ",'", ": '", "।", "।'"} , StringSplitOptions.RemoveEmptyEntries); –