iphone - 在 NSString 中搜索多个字符串

标签 iphone ios objective-c string nsstring

在 Objective C 中是否可以同时搜索 NSString 中的多个不同字符串?

例如,我想在一个很长的字符串中搜索所有出现的字符串“good”、“great”、“awesome”、“incredible”、“fantastic”和“brilliant”。

我的第一个想法是使用 NSString:rangeOfString: 并循环多次(每个字符串一次),但令我吃惊的是,对于较长的字符串集,这可能会变得低效且缓慢。

是否有像这样的内置方法来搜索多个字符串,还是我应该创建自己的方法?

编辑:结果出来了!

找时间进行基准测试后,我发现 RegEx 方法确实比循环 rangeInString 方法慢(慢 2 倍以上)。数字如下:

包含150,000 个单词(~1103,500 个字符)和20 个匹配词 的列表,存在5412 个匹配项

NSString:rangeInString search = 231.077ms
正则表达式搜索 = 530.113ms

最佳答案

it strikes me that with longer sets of strings, this may become inefficient and slow.

那么,您是否对其进行了基准测试?如果不是,那么你没有权利判断它是“低效”和“缓慢”。过早的优化是邪恶的。只需坚持使用那些漂亮而简单的 for 循环和 - [NSString rangeOfString:] 方法即可。


但是:要真正回答您的问题,不可能避免手动循环。如果您将 NSRegularExpressiongood|great|awesome 之类的正则表达式一起使用,那么您可以一次找到所有出现的地方。 不过,使用正则表达式可能比简单的字符串搜索慢。

关于iphone - 在 NSString 中搜索多个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18385500/

相关文章:

ios - UIButton 像苹果键盘一样扩展触摸区域

iphone - UITextField 列表?如何实现类似的UI?

iPhone dev - 在 init 或 viewDidLoad 中创建数组

objective-c - UITextField 边框动画

sql - 在SQLite中插入或替换

iphone - 为什么我无法在 Interface Builder 中更改 View Controller 的 View 大小?

ios - 创建一个圆形颜色选择器

iphone - 清晰颜色的十六进制代码

iphone - NSDateFormatter——没有得到正确的格式化程序字符串

ios - Controller 中的旋转木马在我的收藏 View 中弄乱了尺寸