首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Objective-C中添加数字字符串

问如何在Objective-C中添加数字字符串
EN

Stack Overflow用户
提问于 2011-12-04 11:15:14
回答 3查看 130关注 0票数 0

我试图在Objective-C中将字符串中的所有数字相加,但我无法计算出它。

例如:

代码语言:javascript
复制
NSString *number = @"234454875657";

如何一次提取一个数字,然后将它们相加?

我知道您必须使用循环,我尝试使用方法名characterAtIndex:(NSUInteger)索引,但它返回unichar。此外,如果字符串很短,您可以获取intValue并使用% 10,然后除以10来将所有数字相加,但如果它是一个长字符串,并且只有Double可以容纳它,该怎么办?%不适用于双精度值。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-04 11:56:06

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

代码语言:javascript
复制
    int digit = (int)([number characterAtIndex:i] - (unichar)'0');

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

(但是,如果您这样做是为了计算信用卡号码的校验码,那么您应该谨慎行事--以某种方式检查字符。)

票数 0
EN

Stack Overflow用户

发布于 2011-12-04 11:36:49

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

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

代码语言:javascript
复制
int sum = 0;
for (long long number = [@"234454875657" longLongValue]; number > 0; number /= 10) {
    sum += number % 10;
}
票数 1
EN

Stack Overflow用户

发布于 2011-12-04 13:11:09

代码语言:javascript
复制
for(int i=0 < i < [str length]; i++) {
    NSString *char = [str characterFromIndex:[str length]-1];
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8372982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档