Objective-C如何将NSString转换为NSInteger?

11


我有一个小问题。当我有一个字符串“3 568 030”,并使用[myString intValue]时,它只给出了3的结果,问题是我想将整个数字转换为int / nsinteger。 如果有帮助的话,字符串始终只包含数字。 我尝试使用replaceoccurencesofstring(或者是什么名字),但它似乎不起作用...
谢谢


那么你已经将数字中的空格替换为空了吗? - Björn Kaiser
5个回答

29

做:

NSString *str = @"3 568 030";

int aValue = [[str stringByReplacingOccurrencesOfString:@" " withString:@""] intValue];
NSLog(@"%d", aValue);

输出

3568030


8
那是因为你字符串上有空格,你需要先去掉空白字符,方法如下:
NSString *trimmedString = [myString stringByReplacingOccurrencesOfString:@" " withString:@""];

NSInteger *value = [trimmedString intValue];

修剪操作不会从字符串中间删除字符。 - James Webster

2
我猜您错误地使用了stringByReplacingOccurrencesOfString::方法。
//Remove spaces.
myString = [myString stringByReplacingOccurencesOfString:@" " withString @""];
int myNumber = [myString intValue];

2

首先,使用以下方法从原始字符串中删除所有空格:

NSString *trimmedString = [yourOriginalString stringByTrimmingCharactersInSet:
                              [NSCharacterSet whitespaceAndNewlineCharacterSet]];

然后,您可以将其转换为int/NSInteger。注意:使用[myString intValue]会将您的字符串转换为int,但[myString integerValue]会将其转换为NSInteger。


1
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber * myNumber = [f numberFromString:@"42"];
[f release];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接