2011-02-01 15 views
6

निम्न कोड यह पहचान करेगा कि एक स्ट्रिंग एक पूर्णांक है - यानी, स्ट्रिंग में केवल अंक हैं। लेकिन, मुझे इस कोड से नफरत है। एक बेहतर तरीका क्या है?यह जांचने का एक बेहतर तरीका क्या है कि स्ट्रिंग आईफोन पर एक पूर्णांक है या नहीं?

NSString *mightBeAnInteger = fooString; 
int intValue = [fooString intValue]; 
if (intValue > 0 
    && [[NSString stringWithFormat:@"%d",intValue] isEqualToString:mightBeAnInteger]) { 
    NSLog(@"mightBeAnInteger is an integer"); 
} 
+0

की [? NSString पूर्णांक है] संभव डुप्लिकेट (http://stackoverflow.com/questions/565696/nsstring-is-integer) –

उत्तर

20

[fooString rangeOfCharacterFromSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]].location == NSNotFound हाँ हो सकता है अगर स्ट्रिंग केवल उस में नंबर कैरेक्टर हैं।

ध्यान दें कि इसमें नकारात्मक संख्याएं नहीं हैं, इसलिए आपको नकारात्मक संकेत (शायद mutableCopy को पकड़कर और जोड़ जोड़कर) में जोड़ना होगा।

+1

अच्छा जवाब है, लेकिन तुम सिर्फ उपयोग कर सकते हैं कस्टम NSCharacterSet कन्स्ट्रक्टर कैरेक्टर विथ कैथैक्टर्सइनस्ट्रिंग: 0-9 + में गुजर रहा है। " और "-"। –

+0

कोई अवधि नहीं - पोस्टर पूर्णांक चाहता था। व्यक्तिगत रूप से मैं स्ट्रिंग कन्स्ट्रक्टर का उपयोग करने के बजाय साइन जोड़ना चाहता हूं, लेकिन यह सिर्फ मुझे है! – kevboh

+0

इस उत्तर में मामलों को शामिल नहीं किया गया है: @ "1111-1111" जो वैध int नहीं है। यह जांचना बेहतर है कि [fooString intValue] <0 बस जोड़ने के बजाय - साइन करें। –

1
-(BOOL) stringIsNumeric:(NSString *) str { 
    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
    NSNumber *number = [formatter numberFromString:str]; 
    [formatter release]; 
    return !!number; // If the string is not numeric, number will be nil 
} 

स्रोत: Objective c: Check if integer/int/number

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

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