2012-02-21 10 views
15

मैं खाली स्ट्रिंग को कैसे पार्स करूं? int.Parse(Textbox1.text) मुझे एक त्रुटि देता है:int.Parse, इनपुट स्ट्रिंग सही प्रारूप में नहीं थी

Input string was not in a correct format.
System.FormatException: Input string was not in a correct format.

पाठ रिक्त हो, तो (Textbox1.text = ''), यह इस त्रुटि फेंकता है। मैं इस त्रुटि को समझता हूं लेकिन यह सुनिश्चित नहीं करता कि इसे कैसे ठीक किया जाए।

+0

आप wouldn:

public static int? ToNullableInt32(this string s) { int i; if (Int32.TryParse(s, out i)) return i; return null; } 

यहाँ संदर्भ है यह जांचने से पहले स्ट्रिंग खाली है या नहीं, जांचें। if (! string.IsNullOrEmpty (Textbox1.Text))। जाहिर है यह स्ट्रिंग एक संख्या नहीं है, तो यह आपको अभी भी एक त्रुटि देगा, इसलिए इसे पूरा करने के लिए – SCB

उत्तर

25

आप डिफ़ॉल्ट देख रहे हैं एक खाली टेक्स्टबॉक्स पर 0 (और खराब रूप से स्वरूपित इनपुट पर अपवाद फेंक दें):

int i = string.IsNullOrEmpty(Textbox1.Text) ? 0 : int.Parse(Textbox1.Text); 

आप किसी भी खराब स्वरूपित इनपुट के साथ 0 के लिए डिफ़ॉल्ट करने के लिए देख रहे हैं:

int i; 
if (!int.TryParse(Textbox1.Text, out i)) i = 0; 
+1

दूसरा कोड स्निपेट सुझाव देता है कि झूठी वापसी करते समय TryParse पिछले मान को बरकरार रखेगा लेकिन यह इसके बजाय शून्य होगा। बेहतर लिखो 'int i; अगर (! int.TryParse (Textbox1.Text, i i)) i = 0; 'या कोई सोचता है कि निम्नलिखित काम करेगा I int -1 = -1; int.TryParse (टेक्स्टबॉक्स 1.Text, बाहर i); ' – Firo

+0

@ फ़िरो - Google बिंदु। अपडेट किया गया! – userx

+0

'आउट i' - अगर इसे पार्स नहीं किया गया है तो इसे' 0' को असाइन किया जाएगा, इसलिए शून्य जांच और असाइनमेंट के लिए अतिरिक्त हैं। – Qwertiy

7
if(!String.IsNullOrEmpty(Textbox1.text)) 
    var number = int.Parse(Textbox1.text); 

या और भी बेहतर:

int number; 

int.TryParse(Textbox1.Text, out number); 
14

ठीक है, तुम क्या चाहते करते नतीजा? तुम सिर्फ इनपुट को मान्य करना चाहते हैं, int.TryParse बजाय का उपयोग करें:

int result; 

if (int.TryParse(Textbox1.Text, out result)) { 
    // Valid input, do something with it. 
} else { 
    // Not a number, do something else with it. 
} 
4

इस प्रयास करें:

int number; 
if (int.TryParse(TextBox1.Text, out number)) 
{ 
    //Some action if input string is correct 
} 
-1

आप इसे सरल try/catch के साथ रैप कर सकते हैं ...

+0

इनपुट में कुछ सत्यापन जोड़ें। हमेशा इनपुट को मान्य करें - अपवादों के लिए योजना न बनाएं। – Ryan

+0

यह एक वैध विकल्प है लेकिन आपको यह स्पष्ट होना चाहिए कि आप केवल 'पकड़ (सिस्टम.फॉर्मेट एक्सेप्शन) ' –

+0

चाहते हैं, यह एक गंदे और तेज़ समाधान ... – SolidSnake

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

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