2012-05-05 9 views
5

से विशिष्ट संख्याएं प्राप्त करें मेरी वर्तमान प्रोजेक्ट में मुझे सबस्ट्रिंग के साथ बहुत काम करना है और मैं सोच रहा हूं कि स्ट्रिंग से संख्याएं प्राप्त करने का कोई आसान तरीका है या नहीं।स्ट्रिंग

उदाहरण: मैं इस तरह एक स्ट्रिंग: 12 पाठ पाठ 7 पाठ

मैं बाहर निकलने के लिए उपलब्ध करना चाहते हैं पहले नंबर सेट या दूसरी संख्या निर्धारित किया है। तो अगर मैं नंबर 1 के लिए पूछता हूं तो मुझे बदले में 12 मिलेगा और यदि मैं नंबर 2 के लिए पूछता हूं तो मुझे बदले में 7 मिलेंगे।

धन्यवाद!

उत्तर

7

इस स्ट्रिंग से पूर्णांकों की एक सरणी पैदा करेगा:

+0

धन्यवाद, बस मुझे क्या चाहिए! : डी बीटीडब्ल्यू नीचे वोट के लिए खेद है, मुझे नहीं पता था कि मैं वोट नहीं दे सका क्योंकि मैं नया पंजीकृत हूं। –

+0

@TobiasLindberg: खुशी है कि यह मदद की, उस मामले में आप नीचे वोट meybe पूर्ववत कर सकते हैं :)? –

+0

क्षमा करें यह सिर्फ एक ग्राहक पक्ष की बात थी, यह वास्तव में आपको वोट नहीं दे सका। एक बार फिर धन्यवाद! –

1

Regex के लिए एक अच्छा मैच की तरह दिखता है।

मूल नियमित अभिव्यक्ति \d+ (एक या अधिक अंक) से मेल खाने के लिए होगी।

आप संग्रह के माध्यम से Regex.Matches से वापस लौट आएंगे और बदले में प्रत्येक लौटे मैच को पार्स कर देंगे।

var matches = Regex.Matches(input, "\d+"); 

foreach(var match in matches) 
{ 
    myIntList.Add(int.Parse(match.Value)); 
} 
1

नियमित अभिव्यक्ति का उपयोग करके देखें, तो आप [0-9]+ जो अपने स्ट्रिंग के भीतर अंकों का कोई भी रन से मेल खाएगी मिलान कर सकते हैं। सी # कोड इस प्रकार इस regex मोटे तौर पर उपयोग करने के लिए है:

Match match = Regex.Match(input, "[0-9]+", RegexOptions.IgnoreCase); 

// Here we check the Match instance. 
if (match.Success) 
{ 
    // here you get the first match 
    string value = match.Groups[1].Value; 
} 

आप निश्चित रूप से अभी भी लौटे तार पार्स करने के लिए होगा।

Regex regex = new Regex(@"^[0-9]+$"); 
0

आप रेगुलर एक्सप्रेशन से इस्तेमाल कर सकते हैं

using System.Linq; 
using System.Text.RegularExpressions; 

class Program { 
    static void Main() { 
     string text = "12 text text 7 text"; 
     int[] numbers = (from Match m in Regex.Matches(text, @"\d+") select int.Parse(m.Value)).ToArray(); 
    } 
} 
+0

आप मानते हैं कि अग्रणी '0 की अनुमति नहीं है। – Oded

0

आप string.Split का उपयोग कर भागों में स्ट्रिंग विभाजित कर सकते हैं, और फिर travese int.ryryParse लागू करने वाले एक foreach के साथ सूची: इस तरह कुछ:

string test = "12 text text 7 text"; 
var numbers = new List<int>(); 
int i; 
foreach (string s in test.Split(' ')) 
{ 
    if (int.TryParse(s, out i)) numbers.Add(i); 
} 

अब संख्याओं की सूची है वैध मानों का

+0

हाय ओडेड, पकड़ के लिए धन्यवाद। जैसा कि पहले वाक्य में बताया गया है, यह TryParse होना चाहिए। मैंने इसे सही किया है। –

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