2011-01-25 10 views
48

से NUMBER प्राप्त करने के लिए मुझे एक्सएमएल से "7+" या "5+" या "+5" प्राप्त होता है और रेगेक्स का उपयोग करके स्ट्रिंग से केवल संख्या निकालना चाहता है। , उदा, Regex.Match() फ़ंक्शनरेगेक्स केवल स्ट्रिंग

 stringThatHaveCharacters = stringThatHaveCharacters.Trim(); 
     Match m = Regex.Match(stringThatHaveCharacters, "WHAT I USE HERE"); 
     int number = Convert.ToInt32(m.Value); 
     return number; 

उत्तर

61

\d+

\d किसी भी अंकों, एक या अधिक के लिए + प्रतिनिधित्व करता है। यदि आप नकारात्मक संख्याओं को पकड़ना चाहते हैं तो आप -?\d+ का उपयोग कर सकते हैं।

नोट एक स्ट्रिंग के रूप में, यह "\\d+" के रूप में सी # में प्रतिनिधित्व दिया जाना चाहिए कि, या @"\d+"

4

या तो [0-9] या \d यदि आप केवल एक एकल अंक की जरूरत है पर्याप्त होना चाहिए। यदि आपको और चाहिए तो + संलग्न करें। के रूप में \d संभवतः किसी भी स्क्रिप्ट में किसी भी दशमलव अंकों वहाँ बाहर है कि दशमलव अंक वाले मैच


1 अर्थ विज्ञान थोड़े अलग हैं।

+0

कृपया Regex.Match समारोह में उपयोग करने के लिए सही regex परिभाषित .... क्योंकि im अच्छा नहीं रेगेक्स (SYNTAX) –

+0

एक अंक के लिए आपको रेगेक्स की आवश्यकता नहीं है: 'char digit = s.First (Char.IsDigit);'। मैं इसे अपने उत्तर में जोड़ दूंगा, लेकिन मुझे नहीं लगता कि यह मामला यहां है। – Kobi

+0

@ कोबी: हालांकि, स्ट्रिंग पर अभी भी स्पष्ट पुनरावृत्ति की आवश्यकता होगी। अधिकांश लोग रेगेक्स का उपयोग करने का विकल्प चुनना नहीं चाहते हैं :-) – Joey

80

उपरोक्त उत्तरों महान हैं। आपको लगता है कि nonconsecutive हैं एक स्ट्रिंग से बाहर सभी नंबरों को पार्स करने की जरूरत होती है तो निम्नलिखित कुछ मदद की हो सकती है:

string input = "1-205-330-2342"; 
string result = Regex.Replace(input, @"[^\d]", ""); 
Console.WriteLine(result); // >> 12053302342 
+0

मुझे यह जवाब उपयुक्त बनाता है - काम करता है! – peterincumbria

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