Найти символы из заданной строки с номерами. - PullRequest
1 голос
/ 30 июля 2011

Как получить строку, используя NSScanner, из строки, которая также содержит строку и цифры?

т.е. 001234852ACDSB

Результат должен быть 001234852 и ACDSB

Я могу получить числа из строки, используя NSScanner, и символы, используя stringByReplacingOccurferencesOfString но я хочу знать, возможно ли получить строку с помощью NSScanner или любых других встроенных методов?

Я бы хотел узнать Regex для того же.

Ответы [ 3 ]

2 голосов
/ 30 июля 2011

Если вы можете гарантировать, что строка всегда состоит из цифр, за которыми следуют буквы, то вы можете сделать следующее с помощью 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]+)
2 голосов
/ 01 августа 2011

Наконец, после того, как Google для того же и пройти через некоторую информацию из сети, я достиг своей цели. С этим я отправляю код, это может помочь многим, кто сталкивается с той же проблемой, что и я.

    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
    }
0 голосов
/ 30 июля 2011

Вам не нужно использовать сканер, чтобы сделать это.

NSString *mixedString = @"01223abcdsadf";

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

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

Для другого возможного решения посмотрите этот вопрос Удалите все, кроме цифр, из NSString

...