我正在尝试在Objective-C中添加字符串中的所有数字,但我无法理解。
例如:
NSString *number = @"234454875657";
你如何一次拉一个数字然后加起来?
我知道你必须使用一个循环,我试图使用方法名称characterAtIndex:(NSUInteger)索引,但它返回unichar。此外,如果字符串很短,您可以获取intValue并使用%10然后除以10来累加所有数字,但是如果它是一个长字符串并且只有Double可以保存它。 %不会对双值有效。
答案 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];
}