我想知道它是否可以在文本中检测并删除字符串格式的日期,如下所示:
Title 31 December 2012
Title December 2012
Title 31-12-12
Title (31-12-12)
在这三个例子中,在所有情况下我想删除所有并且只保留世界" Title",我发现这个方法例如删除括号内的文本:
searchText = [searchText stringByReplacingOccurrencesOfString:@" \\([^()]*\\)" withString:@"" options:NSRegularExpressionSearch|NSCaseInsensitiveSearch range:NSMakeRange(0, [searchText length])];
我可以删除这个(31-12-12),但我无法理解我能如何处理其他情况...
答案 0 :(得分:2)
合并为一个RE:
NSString *reText = @" ((\\d{2} )?\\w+ \\d{4})|(\\(?\\d{2}-\\d{2}-\\d{2}\\)?)";
请注意,这实际上是由两个RE组成或者在一起:
(\\d{2} )?\\w+ \\d{4}
和
\\(?\\d{2}-\\d{2}-\\d{2}\\)?
请参阅NSRegularExpression Class Reference
NSArray *testList = @[
@"Title 31 December 2012",
@"Title December 2012",
@"Title 31-12-12",
@"Title (31-12-12)"
];
NSString *reText = @"( (\\d{2} )?\\w+ \\d{4})|( \\(?\\d{2}-\\d{2}-\\d{2}\\)?)";
for (NSString *test in testList) {
NSString *result = [test
stringByReplacingOccurrencesOfString:reText
withString:@""
options:NSRegularExpressionSearch|NSCaseInsensitiveSearch
range:NSMakeRange(0, [test length])];
NSLog(@"result: '%@' test: '%@'", result, test);
}
NSLog输出:
结果:'标题'测试:'标题2012年12月31日'
结果:'标题'测试:'标题2012年12月'
结果:'标题'测试:'标题31-12-12'
结果:'标题'测试:'标题(31-12-12)'
答案 1 :(得分:1)
您必须使用其他正则表达式。
这个应该抓住你的所有4个案例。
searchText = [searchText stringByReplacingOccurrencesOfString:@"\\W+((\\(?\\d+(-|\\.)\\d+(-|\\.)\\d+\\)?)|((\\d+ )?\\w+ \\d+))" withString:@"" options:NSRegularExpressionSearch|NSCaseInsensitiveSearch range:NSMakeRange(0, [searchText length])];