2012-05-23 12 views
10

मैं स्ट्रिंग को कैसे बदलूं, "-100,100" कहें, सी # में लंबे समय तक।लंबा। पर्स() सी #

मैं वर्तमान में कोड की एक पंक्ति जो है

long xi = long.Parse(x, System.Globalization.NumberStyles.AllowThousands); 

है, लेकिन यह टूट जाता है जब एक्स "एक ऋणात्मक संख्या" है।

मेरे दृष्टिकोण: के रूप में यह तोड़ दिया

long xi = long.Parse("-100,253,1", 
System.Globalization.NumberStyles.AllowLeadingSign & System.Globalization.NumberStyles.AllowThousands); 

, गलत था।

उत्तर

9

इस एक जाना दे:

long xi = long.Parse(x, System.Globalization.NumberStyles.AllowThousands | System.Globalization.NumberStyles.AllowLeadingSign); 

यह अच्छी तरह से हो सकता है क्योंकि आप झंडे आप सभी संभावित झंडे कि हिट हो जाएगा declair करना पड़ सकता है की घोषणा कर रहे हैं। मैंने इस कोड को आपके परीक्षण स्ट्रिंग मान का उपयोग करके एक परीक्षण प्रोजेक्ट में काम करने के रूप में अभी पुष्टि की है। अगर यह आपकी आवश्यकताओं को पूरा करता है तो मुझे बताएं। एक पैरामीटर उपयोग में एकाधिक झंडे घोषित करते समय | बजाय &

संपादित करें: http://msdn.microsoft.com/en-us/library/cc138362.aspx शीर्षक "बिट झंडे के रूप में गणन प्रकार" के तहत विभिन्न बिटवाइज़ ऑपरेटर्स की एक explination खोजें (यही कारण है कि तुलना में मैंने सोचा खोजने के लिए कठिन था।)

+0

+1 परीक्षण किया है और अपने "पार्स" होना चाहिए "TryParse", नहीं तो बेहतर जवाब पर – ABH

6

मैं TryParse बजाय प्रयोग करेंगे पार्स की, क्रम में अपवाद से बचने के लिए, अर्थात्:

long xi; 
if (long.TryParse(numberString, System.Globalization.NumberStyles.AllowThousands | System.Globalization.NumberStyles.AllowLeadingSign, null, out xi)) 
    { 
     // OK, use xi 
    } 
    else 
    { 
     // not valid string, xi is 0 
    } 
+1

थोड़ा सा टाइपो काम किया। शर्मिंदा मुझे ट्राईपर्स को इंगित करने की आवश्यकता महसूस नहीं हुई। – Skintkingle

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