【问题标题】:how to get digits of a integer from NSString?如何从 NSString 获取整数的数字?
【发布时间】:2012-08-22 11:51:06
【问题描述】:

我有一个类似NSString *str = @"123"的字符串。我想将此字符串的数字填充到 UIPickerView。但是如何从该字符串中获取数字?我添加了以下代码

- (void)pickerView:(UIPickerView *)pickerView didSelectRow: (NSInteger)row inComponent:(NSInteger)component 
{
 int number = [str intValue];
 if(component == 0)
 {

 }
 else if(component == 1)
 {

 }
 else 
 {

 }
}

【问题讨论】:

  • 意思是要分别得到1,2和3?

标签: iphone objective-c xcode ipad uipickerview


【解决方案1】:

请看这个..

NSMutableArray *arrNumbers = [[NSMutableArray] alloc] initWithCapacity:[YOURSTRING length]];

for (i=0;i<[YOURSTRING length];i++) 
{
  unichaar ch = [YOURSTRING characterAtIndex:i];
  NSLog(@"Processing charachter %c",ch);
  // If you really want
  [arrNumbers addObject:(id)ch];
}

【讨论】:

    【解决方案2】:

    考虑到 NSString 已经是一个字符数组,其他解决方案似乎有些过分。更轻量级的解决方案:

    NSString *str = @"123";
    for (int i = 0; i < [str length]; i++) {
        int digit = [str characterAtIndex:i] - '0';
        // do something with your digit
    }
    

    【讨论】:

      【解决方案3】:

      如果你把它作为一个字符串,你可以这样做

      NSArray * digitStrings = [str componentsSeparatedByString:""];
      

      数组中的每个元素都是一个 NSString 形式的数字。

      【讨论】:

        【解决方案4】:

        未测试,但您可以尝试一下,这应该会扫描您的字符串的所有数字条目。

        -(NSArray*)getDigitsFromString:(NSString*)str{
        NSMutableString *outpuString = [NSMutableString
                                        stringWithCapacity:str.length];
        
        NSScanner *scanner = [NSScanner scannerWithString:str];
        NSCharacterSet *numbers = [NSCharacterSet
                                   characterSetWithCharactersInString:@"0123456789"];
        
        while ([scanner isAtEnd] == NO) {
            NSString *buffer;
        
            if ([scanner scanCharactersFromSet:numbers intoString:&buffer]) {
                [outpuString appendString:buffer];
        
            } else {
                [scanner setScanLocation:([scanner scanLocation] + 1)];
            }
        }
        
        NSArray * digitStr = [outpuString componentsSeparatedByString:@""];
        
            return digitStr;
        }
        

        【讨论】:

        • 如果您不确定字符串是否只是数字,您可以这样做。别忘了声明和分配 strippedString,我没看到你这样做。
        • 如果字符串肯定只包含数字,我还建议只使用componentsSeperatedByString 就像@MrAzulay 回答的那样
        【解决方案5】:
         NSMutableArray * digit=[[NSMutableArray alloc]init];
            NSString *string = @"123456";
            for (int i=0;i<[string length]; i++) {
                NSString * newString = [string substringWithRange:NSMakeRange(i, 1)];
        
                [digit addObject:newString];
            }
            NSLog(@"String %@ ", digit)
        

        【讨论】:

          【解决方案6】:

          另一个答案通过解决将 int 分成数字的问题来解决原始问题的更多想法:

            NSString *numberString = @"68243";
            int result[numberString.length]; 
            NSInteger number = [numberString integerValue];
            int j = numberString.length - 1;
            while (j >= 0) 
            {
              int power = pow(10, j);
              int rest = (number %  power);
              result[j] = (number - rest)/power;
              number = rest;
              j--;
            }
          

          【讨论】:

            猜你喜欢
            • 2012-02-17
            • 2011-04-19
            • 2011-10-04
            • 2016-12-03
            • 2011-01-22
            • 2016-05-30
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多