如何从 NSString 获取整数的数字?

Posted

技术标签:

【中文标题】如何从 NSString 获取整数的数字?【英文标题】:how to get digits of a integer from 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? 【参考方案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--;
  

【讨论】:

以上是关于如何从 NSString 获取整数的数字?的主要内容,如果未能解决你的问题,请参考以下文章

plist中的增量编号

如何在 NSString/String 数组中获取最小值和最大值?

如何从字符串中提取数字并获取整数数组?

xcode 如何从 NSURL 获取 NSString

如何从 NSString 中获取值

从NSString获取一个char并转换为int