如何在Objective-C中添加一串数字

时间:2011-12-04 03:15:14

标签: objective-c nsstring

我正在尝试在Objective-C中添加字符串中的所有数字,但我无法理解。

例如:

NSString *number = @"234454875657";

你如何一次拉一个数字然后加起来?

我知道你必须使用一个循环,我试图使用方法名称characterAtIndex:(NSUInteger)索引,但它返回unichar。此外,如果字符串很短,您可以获取intValue并使用%10然后除以10来累加所有数字,但是如果它是一个长字符串并且只有Double可以保存它。 %不会对双值有效。

3 个答案:

答案 0 :(得分:1)

一种方法是使用NSString的-substringWithRange:方法从原始字符串中拉出长度为1的子字符串。然后,您可以使用NSString的-intValue来获取每个子字符串的值。

另一种方法,如果字符串不是太长,则首先将字符串转换为整数,然后将数字相加。它是这样的:

int sum = 0;
for (long long number = [@"234454875657" longLongValue]; number > 0; number /= 10) {
    sum += number % 10;
}

答案 1 :(得分:0)

使用循环和characterAtIndex:。但你得到的是Unicode字符,而不是"数字"。你需要以某种方式将字符转换为数字。有十几种方法可以做到这一点,但最简单的,如果你知道字符都是有效的十进制数字,就是从字符值中减去'0'。类似的东西:

    int digit = (int)([number characterAtIndex:i] - (unichar)'0');

(这利用了在ASCII / Unicode中,十进制数字是连续的,按升序排列的知识。除非您使用Etruscan字符集或其他类似设置,否则这是一个安全的假设。)

(但是,如果您这样做,比如计算信用卡号码的支票代码,您应该安全地播放它并以某种方式检查角色。)

答案 2 :(得分:0)

for(int i=0 < i < [str length]; i++) {
    NSString *char = [str characterFromIndex:[str length]-1];
}