我试图在Objective-C中将字符串中的所有数字相加,但我无法计算出它。
例如:
NSString *number = @"234454875657";如何一次提取一个数字,然后将它们相加?
我知道您必须使用循环,我尝试使用方法名characterAtIndex:(NSUInteger)索引,但它返回unichar。此外,如果字符串很短,您可以获取intValue并使用% 10,然后除以10来将所有数字相加,但如果它是一个长字符串,并且只有Double可以容纳它,该怎么办?%不适用于双精度值。
发布于 2011-12-04 11:56:06
使用循环和characterAtIndex:。但是你得到的是一个Unicode字符,而不是一个“数字”。您需要以某种方式将字符转换为数字。有十几种方法可以做到这一点,但如果您知道字符都是有效的十进制数字,那么最简单的方法是从字符值中减去'0'。类似于:
int digit = (int)([number characterAtIndex:i] - (unichar)'0');(这利用了以下知识:在ASCII/Unicode中,十进制数字是按升序排列的。除非您使用的是Etruscan字符集或类似的字符集,否则这是一个安全的假设。)
(但是,如果您这样做是为了计算信用卡号码的校验码,那么您应该谨慎行事--以某种方式检查字符。)
发布于 2011-12-04 11:36:49
一种方法是使用NSString的-substringWithRange:方法从原始字符串中提取长度为1的子串。然后,您可以使用NSString的-intValue来获取每个子字符串的值。
如果字符串不太长,另一种方法是首先将字符串转换为整数,然后将数字相加。应该是这样的:
int sum = 0;
for (long long number = [@"234454875657" longLongValue]; number > 0; number /= 10) {
sum += number % 10;
}发布于 2011-12-04 13:11:09
for(int i=0 < i < [str length]; i++) {
NSString *char = [str characterFromIndex:[str length]-1];
}https://stackoverflow.com/questions/8372982
复制相似问题