【发布时间】:2013-08-22 15:59:44
【问题描述】:
在 Objective C 中是否可以同时在一个 NSString 中搜索多个不同的字符串?
例如,我想在一个很长的字符串中搜索所有出现的字符串“good”、“great”、“awesome”、“incredible”、“fantastic”和“brilliant”。
虽然我的第一个方法是使用NSString:rangeOfString: 并循环多次(每个字符串一次),但令我震惊的是,如果字符串集越长,这可能会变得低效且缓慢。
有没有像这样搜索多个字符串的内置方法,还是我应该创建自己的方法?
编辑:结果出来了!
在找到一些时间进行基准测试后,我发现 RegEx 方法确实比循环 rangeInString 方法慢(慢了 2 倍多)。数字如下:
包含 150,000 个单词(约 1103,500 个字符)和 20 个匹配词的列表,其中存在 5412 个匹配项
NSString:rangeInString 搜索 = 231.077ms
正则表达式搜索 = 530.113ms
【问题讨论】:
-
乍一看恐怕你将不得不“手动”迭代,但我希望有人能证明我错了
-
@GabrielePetronella 我刚刚做了 :)
-
@H2CO3,很好的答案,即使您正确指出,正则表达式可能会更慢;)
-
@GabrielePetronella 是的......我不想成为个人,但我讨厌正则表达式。他们曾经非常欺骗我,我很难忘记:P
-
是的,当然可以,可能你需要在异步线程上多次运行
–rangeOfString:方法,这几乎是一样的。 :)
标签: iphone ios objective-c string nsstring