Objective c 检测并删除文本中的日期字符串
我想知道是否可以在文本中检测并删除字符串格式的日期,如下所示:Objective c 检测并删除文本中的日期字符串,objective-c,ios,nsstring,Objective C,Ios,Nsstring,我想知道是否可以在文本中检测并删除字符串格式的日期,如下所示: Title 31 December 2012 Title December 2012 Title 31-12-12 Title (31-12-12) 在这三个示例中,在所有情况下,我都希望删除所有内容并仅保留世界“标题”,我发现这种方法可以删除括号内的文本: searchText = [searchText stringByReplacingOccurrencesOfString:@" \\([^()]*\\)" withStr
Title 31 December 2012
Title December 2012
Title 31-12-12
Title (31-12-12)
在这三个示例中,在所有情况下,我都希望删除所有内容并仅保留世界“标题”,我发现这种方法可以删除括号内的文本:
searchText = [searchText stringByReplacingOccurrencesOfString:@" \\([^()]*\\)" withString:@"" options:NSRegularExpressionSearch|NSCaseInsensitiveSearch range:NSMakeRange(0, [searchText length])];
我可以删除这个(31-12-12),但我不明白如何处理其他情况…您必须使用不同的正则表达式 这一个应该能抓住你所有的4个箱子
searchText = [searchText stringByReplacingOccurrencesOfString:@"\\W+((\\(?\\d+(-|\\.)\\d+(-|\\.)\\d+\\)?)|((\\d+ )?\\w+ \\d+))" withString:@"" options:NSRegularExpressionSearch|NSCaseInsensitiveSearch range:NSMakeRange(0, [searchText length])];
合并为一个RE:
NSString *reText = @" ((\\d{2} )?\\w+ \\d{4})|(\\(?\\d{2}-\\d{2}-\\d{2}\\)?)";
请注意,这实际上是由两个或两个对象组成的:
(\\d{2})\\w+\\d{4}
和
\\(?\\d{2}-\\d{2}-\\d{2}\\)?
看
NSLog输出:结果:“标题”测试:“标题2012年12月31日”
结果:“标题”测试:“标题2012年12月”
结果:“标题”测试:“标题31-12-12”
结果:“标题”测试:“标题(31-12-12)标题总是第一件事吗?您是否可以始终将searchText的值设置为@“Title”?您发布的字符串替换使用正则表达式将字符串匹配字符替换为空字符串,因此您需要确定所有可能情况下的正则表达式组合。不,标题只是例如,“始终更改…”我编辑了我的答案,但更具体一点不会有任何影响。哪种方式不起作用?在哪种情况下?非常感谢,现在可以了!:)最后一个问题,有一种方法可以解决这个问题:标题-第一版-12月31日,并且只保留这个:标题-第一版?再次感谢您提供的令人惊讶的答案:)您能告诉我如何找到使用此文档的文档吗?因为我认为在未来我必须添加更多的案例,我想自己做:)我的最后一次编辑也捕捉到了这个案例。查找任何正则表达式指南。我建议尝试一下。还请记住,您需要在Obj-C字符串中转义“`”。这样,这不是固定的:“Title-2012年5月”return“Title-”
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);
}