Регулярное выражение: получите 1234 от //test.test.com/test/1234/

У меня есть NSString - @"//test.test.com/test/1234/"

Как я могу проверить строку содержит //test.test.com/test/ и получить 1234?

Я пытался -

 NSString *newstr = [string stringByReplacingOccurrencesOfString:@"[^0-9]" withString:@"" options:NSRegularExpressionSearch range:NSMakeRange(0, [string length])];

но он получает только цифры.

Может быть, мне нужно использовать NSRegularExpressions? Но как?

2 ответа

Решение

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

NSString* str = @"//test.test.com/test/1234/";
NSString* newstr = [str lastPathComponent];     //  Returns "1234"

Как я могу проверить строку, содержащую //test.test.com/test/ и получить 1234?

Если вы хотите извлечь только последний параметр, если ваша строка начинается с //test.test.com/test/ тогда вы можете использовать это:

NSString* str = @"//test.test.com/test/1234/";
NSString* lastPart = @"";

if ([str rangeOfString:@"//test.test.com/test"].location != NSNotFound)
{
    lastPart = [str lastPathComponent];
}

Помогает мне -

NSString *pattern = @"//test.test.com/test/(\\d+)/";
            NSRegularExpression *regex = [NSRegularExpression
                                          regularExpressionWithPattern:pattern
                                          options:NSRegularExpressionCaseInsensitive
                                          error:nil];
            NSTextCheckingResult *textCheckingResult = [regex firstMatchInString:string options:0 range:NSMakeRange(0, string.length)];

            NSRange matchRange = [textCheckingResult rangeAtIndex:1];
            NSString *match = [string substringWithRange:matchRange];
            NSLog(@"Found string '%@'", match);
Другие вопросы по тегам