2009-12-14 13 views
5

मेरे पास एक स्ट्रिंग सरणी है। क्या जांच करने के लिए करता है, तो सभी सरणी के तत्वों के नंबर दिए गए हैंसंख्याओं की जांच करने का सबसे आसान तरीका

string[] str = new string[] { "23", "25", "Ho" }; 
+8

कृपया, संख्या निर्धारित करें: अपने एक int32, दशमलव, फ्लोट सूत्रीय? –

उत्तर

6

आप Microsoft.VisualBasic विधानसभा के लिए एक संदर्भ जोड़ने, तो आप निम्न एक लाइनर का उपयोग कर सकते हैं:

bool isEverythingNumeric = 
    str.All(s => Microsoft.VisualBasic.Information.IsNumeric(s)); 
+0

चालाक +1 ... आउट-ऑफ-द-बॉक्स सोच –

+2

+1, यह विचार मुझे डराता है, लेकिन, नरक, यह काम करता है =) –

+1

विज़ुअलबासिक के लिए इतना विशिष्ट क्यों लगता है? – davidfowl

4

इस प्रयास करें सबसे सरल तरीका है:

string[] str = new string[] { "23", "25", "Ho" }; 
double trouble; 
if (str.All(number => Double.TryParse(number, out trouble))) 
{ 
    // do stuff 
} 
+0

अच्छा विचार है, लेकिन यह केवल तभी काम करेगा जब सभी नंबर Int32 के अंदर फिट हों। – Konamiman

+0

किस मामले में, डबल। ट्राईपर्स को काम करना चाहिए। –

2

तथ्य यह है कि एक स्ट्रिंग भी वर्ण की एक सरणी है का उपयोग करना, आप कुछ कर सकते हैं इस तरह:

str.All(s => s.All(c => Char.IsDigit(c))); 
+0

लेकिन यह तारों के साथ काम नहीं करेगा जिसमें सफेद स्थान है। और वैज्ञानिक नोटेशन के बारे में कैसे? –

+0

ऐसा लगता है कि हमें परिभाषित करने की आवश्यकता है कि पहले नंबर क्या है =) –

+2

कोना ... -1 के बारे में क्या? यह एक डाउनवोट नहीं है: पी बस एक प्रश्न;) –

6

आप ऐसा कर सकते हैं:

var isOnlyNumbers = str.All(s => 
    { 
     double i; 
     return double.TryParse(s, out i); 
    }); 
+0

अज्ञात डाउनवोट क्यों? –

1

या LINQ के बिना ...

bool allNumbers = true; 
foreach(string str in myArray) 
{ 
    int nr; 
    if(!Int32.TryParse(str, out nr)) 
    { 
     allNumbers = false; 
     break; 
    } 
} 
+0

linq का उपयोग क्यों नहीं करते? आप अपनी खुद की TryParse विधि लिखने के साथ जारी रख सकते हैं :) – Kamarey

+2

क्योंकि हमारे बुरे मालिक हमें सी # 2.0 का उपयोग करने के लिए मजबूर करते हैं;) – Carra

3

कैसे नियमित अभिव्यक्ति का उपयोग कर के बारे में?

using System.Text.RegularExpressions; 
... 
bool isNum= Regex.IsMatch(strToMatch,"^\\d+(\\.\\d+)?$"); 

TryParse

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