2008-11-06 30 views
11

मैं इसकि क्या स्ट्रिंग मान संख्या मान या सी # में नहीं

स्ट्रिंग str = "dfdsfdsf8fdfdfd9dfdfd4"

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

उत्तर

31

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

bool val = System.Text.RegularExpressions.Regex.IsMatch(str, @"\d"); 
+0

और जॉन एम गंट का जवाब भी देखें : http://stackoverflow.com/questions/894263/how-to-identify-if-string-contain-a-number –

+1

धन्यवाद, बस मैं जो खोज रहा था। – Mana

9

आप एक पूर्णांक मूल्य के लिए देख रहे हैं int.TryParse:

int result; 
if (int.TryParse("123", out result)) 
{ 
    Debug.WriteLine("Valid integer: " + result); 
} 
else 
{ 
    Debug.WriteLine("Not a valid integer"); 
} 

एक दशमलव संख्या जाँच के लिए, साथ int.TryParse की जगह Decimal.TryParse। विवरण के लिए इस ब्लॉग पोस्ट को देखें और टिप्पणियां "Why you should use TryParse() in C#" देखें।

आप दशमलव संख्या की जरूरत है, तो आप वैकल्पिक रूप से इस नियमित अभिव्यक्ति इस्तेमाल कर सकते हैं:

return System.Text.RegularExpressions.Regex.IsMatch(
    TextValue, @"^-?\d+([\.]{1}\d*)?$"); 

और अंत में एक और विकल्प (यदि आप धार्मिक VB.NET के खिलाफ नहीं हैं), आप में विधि का उपयोग कर सकता है Microsoft.VisualBasic नाम स्थान:

Microsoft.VisualBasic.Information.IsNumeric("abc"); 
0

आप मेरे जैसे एक LINQ जंकी हैं, तो आप इसे इस तरह करना चाहते हैं

string s = "abc1def2ghi"; 
bool HasNumber = (from a in s.ToCharArray() where a >= '0' && a <= '9' select a).Count() > 0; 
+0

अच्छा भगवान, यह घृणित है। अगर मुझे लगता है कि कोड समीक्षा में मैं (ए) इसे उत्पादित करता हूं; (बी) आपको उत्पादित करें। – endian

+2

कोड खराब नहीं है - सिवाय इसके कि आपको "गणना()> 0" के बजाय "कोई()" का उपयोग करना चाहिए - इस तरह आप शॉर्ट सर्किट और शेष सूची का मूल्यांकन करने की आवश्यकता नहीं है क्योंकि आप जानते हैं कि आपके पास है पहले से ही 'सच' मारा। –

0

सी # 2.0 में, इस प्रयास करें:

 string str = "dfdsfdsf8fdfdfd9dfdfd4"; 

     for (int i = 0; i < str.Length; i++) 
     { 
      int result; 
      if (int.TryParse(str[i].ToString(), out result)) 
      { 
       //element is a number    
      } 
      else 
      { 
       // not a number 
      } 
     } 
6

आप स्ट्रिंग लूप करने के लिए जा रहे हैं, int.TryParse का उपयोग नहीं करते ... कि जिस तरह से बहुत भारी है। इसके बजाय, char.IsNumber() का उपयोग करें;

उदाहरण:

foreach (char c in myString) 
    if (char.IsNumber(c)) 
     return true; 
+0

लूप का उपयोग करने के बजाय, नियमित अभिव्यक्ति का उपयोग एक अच्छा विकल्प है। – Shekhar

4
str.ToCharArray().Any(x => char.IsNumber(x)); 
+1

धन्यवाद ['String.IEnumerable (Char of) .GetEnumerator'] (http://msdn.microsoft.com/en-us/library/cc672334.aspx), आपको वास्तव में 'ToCharArray' की भी आवश्यकता नहीं है () 'क्योंकि स्ट्रिंग स्वचालित रूप से टाइप चार की गणना के रूप में डाली जाती है। – KyleMit

0
str.ToCharArray().Any(char.IsNumber) 
+0

'कोई भी()' एक अनुमान लगाता है, इसलिए यह संकलित नहीं होगा। साथ ही, यह सटीक उत्तर [कमल द्वारा पहले ही प्रदान किया गया था] (http: // stackoverflow।कॉम/ए/11145727/1366033) – KyleMit

+0

दरअसल कि विधि समूह एक मान्य भविष्यवाणी है, इसलिए यह संकलित करता है, और यह उत्तर कमल के समान नहीं है – andrewtatham

0

Kamals जवाब के कुछ हिस्सों और Tristars जवाब देने का मेल ...

str.Any(char.IsNumber) 

जो मुझे लगता है कि सबसे संक्षिप्त और पठनीय रास्ता है, बजाय एक regex

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