确定NSString的第一个字符是否为数字

max*_*ax_ 6 iphone xcode numbers objective-c nsstring

我只想知道如何确定NSStrings的第一个字符是否为数字.

Bel*_*oda 21

BOOL hasLeadingNumberInString(NSString* s) {
if (s)
    return [s length] && isnumber([s characterAtIndex:0]);
else
    return NO;
Run Code Online (Sandbox Code Playgroud)

}

如果您同时处理许多NSStrings(比如循环遍历数组)并且您想要检查每个NSStrings是否像前导数字一样,那么最好包括检查,这样您就不会尝试评估空字符串或不存在的字符串.

例:

NSString* s = nil; //Edit: s needs to be initialized, at the very least, to nil.
hasLeadingNumberInString(s);          //returns NO
hasLeadingNumberInString(@"");        //returns NO
hasLeadingNumberInString(@"0123abc"); //returns YES
Run Code Online (Sandbox Code Playgroud)


Pab*_*ruz 8

是.你可以做:

NSString *s = ...; // a string
unichar c = [s characterAtIndex:0];
if (c >= '0' && c <= '9') {
    // you have a number!
}
Run Code Online (Sandbox Code Playgroud)


Ano*_*mie 7

我可以想到两种方法.你可以用

[string rangeOfCharacterFromSet:[NSCharacterSet decimalDigitCharacterSet]].location == 0
Run Code Online (Sandbox Code Playgroud)

或者你可以使用

[[NSCharacterSet decimalDigitCharacterSet] characterIsMember:[string characterAtIndex:0]]
Run Code Online (Sandbox Code Playgroud)


Ole*_*ann 5

检查返回值:

[myString rangeOfCharacterFromSet:[NSCharacterSet decimalDigitCharacterSet]];
Run Code Online (Sandbox Code Playgroud)

如果location返回范围的值为0,则第一个字符匹配.