Регулярное выражение: получите 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);