我有一个像这样的NSString:
@"200hello"
或
@"0 something"
我希望能够在NSString中获取第一个出现的数字并将其转换为int。
所以@“200hello”会变成int = 200。
和@“0 something”会变成int = 0。
答案 0 :(得分:30)
int value;
BOOL success = [[NSScanner scannerWithString:@"1000safkaj"] scanInteger:&value];
如果数字不总是在开头:
NSCharacterSet* nonDigits = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
int value = [[@"adfsdg1000safkaj" stringByTrimmingCharactersInSet:nonDigits] intValue];
答案 1 :(得分:19)
答案 2 :(得分:8)
如果int值始终位于字符串的开头,则可以使用intValue。
NSString *string = @"123hello";
int myInt = [string intValue];
答案 3 :(得分:3)
我可能会使用正则表达式(使用恒星RegexKitLite实现)。那就像是:
#import "RegexKitLite.h"
NSString * original = @"foo 220hello";
NSString * number = [original stringByMatching:@"[^\\d]*(\\d+)" capture:1];
return [number integerValue];
正则表达式@“[^ \ d] *(\ d +)”表示“任意数量的非数字字符,后跟至少一个数字字符”。
答案 4 :(得分:0)
我提出了自己的答案,可能比其他人提供的答案更快更容易。
我的回答确实假设你知道数字开头和结束的位置......
NSString *myString = @"21sss";
int numberAtStart = [[myString substringToIndex:2] intValue];
你也可以采用其他方式工作:
NSString *myString = @"sss22";
int numberAtEnd = [[myString substringFromIndex:3] intValue];
答案 5 :(得分:-1)
int i;
NSString* string;
i = [string intValue];