在格式化的电话号码中查找子字符串

时间:2014-12-15 22:00:32

标签: objective-c

我的NSString包含格式化的电话号码,例如(123) 456-7890。我想找到匹配用户未格式化输入的子字符串。

因此,如果输入为234,则匹配的子字符串为NSRange(2,5)23) 4)。我该如何实现find方法?

谢谢!

1 个答案:

答案 0 :(得分:1)

接受用户输入并在每个数字之间插入[( )-]*,然后使用正则表达式查找匹配项(如果有)。

NSString *phoneNumber = @"(123) 456-7890";

NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression
                              regularExpressionWithPattern:@"2[( )-]*3[( )-]*4"
                              options:NSRegularExpressionCaseInsensitive
                              error:&error];
[regex enumerateMatchesInString:phoneNumber options:0 range:NSMakeRange(0, [phoneNumber length]) usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop){
    // your code to handle matches here
    NSLog(@"match at location: %lu  length: %lu", (unsigned long)match.range.location, (unsigned long)match.range.length);
}];