将NSString中的第一个数字转换为整数?

时间:2009-07-16 16:26:34

标签: objective-c cocoa cocoa-touch nsstring

我有一个像这样的NSString:

@"200hello"

@"0 something"

我希望能够在NSString中获取第一个出现的数字并将其转换为int。

所以@“200hello”会变成int = 200。

和@“0 something”会变成int = 0。

6 个答案:

答案 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];