【问题标题】:How to extract elements of NSArray and convert them(parseInt) to integer values?如何提取 NSArray 的元素并将它们(parseInt)转换为整数值?
【发布时间】:2012-05-03 09:21:10
【问题描述】:

我有一个 13 位数字的字符串。我需要分隔所有数字并找到各个数字的总和。我该怎么做?

我像这样将字符串转换为 NSArray:

NSArray *arrStrDigits = [str13DigitNumber componentsSeparatedByString:@""];

现在我想运行一个循环并获得类似 arrStrDigits[i]

我是 Objective C 的新手 :(。请帮帮我!

【问题讨论】:

    标签: objective-c ios cocoa nsarray


    【解决方案1】:

    像这样获取单个数字:

    unichar digitChar = [str13DigitNumber characterAtIndex: someIndex];
    // Should put in some validation that you have a digit here
    int digit = digitChar - '0';
    

    这只需要进入一个循环,将 someIndex 从 0 迭代到 [str13DigitNumber length]

    【讨论】:

    • 这条线是做什么的? int digit = digitChar - '0';
    • @user523234:digitChar 是一个 UTF-16 字符。十进制数由 48(代表 0)和 57(代表 9)之间的字符表示。因此,digitChar - '0' 从您拥有的字符代码中减去 0(即 48)的字符代码,从而为您留下数字的数值。例如'4' 由字符 52 表示,'4' - '0' == 52 - 48 == 4
    • 这假定所有字符都是 ASCII 数字(在'0''9' 之间)。超出该范围的任何字符,包括其他数字(Unicode 中有许多数字字符集)和非数字,都会给出无意义的结果。
    • @Peter Hosey:它适用于 99.99% 的输入,并且有一条注释行说“做一些验证”
    【解决方案2】:
    int total=0; 
    for(NSString *numberInString in arrStrDigits)
    { 
        total+=[numberInString intValue];
    }
    

    注意:我假设您的数组的每个位置都有 int。

    注意 1:此答案仅与您的要求有关(运行循环,仅此而已)。

    【讨论】:

      猜你喜欢
      • 2023-01-30
      • 1970-01-01
      • 1970-01-01
      • 2014-11-16
      • 1970-01-01
      • 1970-01-01
      • 2021-08-06
      • 2014-11-27
      • 1970-01-01
      相关资源
      最近更新 更多