使用数字查找给定字符串中的字符。

时间:2011-07-30 05:25:56

标签: iphone objective-c regex nsstring nsscanner

如何从包含字符串和数字的字符串中使用NSScanner获取字符串?

即。 001234852ACDSB

结果应为001234852和ACDSB

我可以使用NSScanner和字符使用 stringByReplacingOccurrencesOfString 从字符串中获取数字,但我想知道,是否可以通过使用NSScanner或任何其他内置方法来获取字符串?

我想知道正则表达式。

3 个答案:

答案 0 :(得分:2)

如果您可以保证字符串始终由数字后跟字母组成,那么您可以使用NSScanner执行以下操作:

NSScanner *scanner = [NSScanner scannerWithString:@"001234852ACDSB"];

NSString *theNumbers = nil;

[scanner scanCharactersFromSet:[NSCharacterSet decimalDigitCharacterSet]
                    intoString:&theNumbers];

NSString *theLetters = nil;
[scanner scanCharactersFromSet:[NSCharacterSet letterCharacterSet]
                    intoString:&theLetters];

捕获相同内容的正则表达式如下所示:

([0-9]+)([a-zA-Z]+)

答案 1 :(得分:2)

最后谷歌也一样,并从网上获取一些信息,我到达了我的目的地。有了这个,我发布了代码,这可能会帮助许多面临同样问题的人。

    NSString *str = @"001234852ACDSB";
    NSScanner *scanner = [NSScanner scannerWithString:str];

    // set it to skip non-numeric characters
    [scanner setCharactersToBeSkipped:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]];

    int i;
    while ([scanner scanInt:&i])
    {
        NSLog(@"Found int: %d",i);    //001234852
    }

    // reset the scanner to skip numeric characters
    [scanner setScanLocation:0];
    [scanner setCharactersToBeSkipped:[NSCharacterSet decimalDigitCharacterSet]];

    NSString *resultString;
    while ([scanner scanUpToCharactersFromSet:[NSCharacterSet decimalDigitCharacterSet] intoString:&resultString])
    {
        NSLog(@"Found string: %@",resultString);    //ACDSB
    }

答案 2 :(得分:0)

您无需使用扫描仪即可完成此操作。

NSString *mixedString = @"01223abcdsadf";

NSString *numbers = [[mixedString componentsSeparatedByCharactersInSet:[[NSCharacterSet characterSetWithCharactersInString:@"0123456789"] invertedSet]] componentsJoinedByString:@""];

NSString *characters = [[mixedString componentsSeparatedByCharactersInSet:[[NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnouprstuwvxyz"] invertedSet]] componentsJoinedByString:@""];

对于其他可能的解决方案,请查看此问题Remove all but numbers from NSString