与一堆字符串进行不区分大小写的比较
将 NSString 与一堆其他不区分大小写的字符串进行比较的最佳方法是什么?如果它是字符串之一,则该方法应返回 YES,否则返回 NO。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
将 NSString 与一堆其他不区分大小写的字符串进行比较的最佳方法是什么?如果它是字符串之一,则该方法应返回 YES,否则返回 NO。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
这是一个小辅助函数:
当然,这可以针对不同的用例进行极大的优化。
例如,如果您对常量的 chunkOfStrings 进行大量检查,则可以使用
NSSet
来保存字符串的小写版本并使用containsObject:
:Here's a little helper function:
Of course this could be greatly optimized for different use cases.
If, for example, you make a lot of checks against a constant bunchOfStrings you could use an
NSSet
to hold lower case versions of the strings and usecontainsObject:
:只需对 Nikolai 的答案添加一些补充:
NSOrderedSame
被定义为 0因此,如果您在
nil
对象上调用caseInsensitiveCompare:
,您将得到 <代码>零。然后,将nil
与NSOrderSame
(即 0)进行比较,您会得到一个匹配,这当然是错误的。此外,您还必须检查传递给
caseInsensitiveCompare:
的参数是否必须不为零。来自文档:Just to add a few additions to Nikolai's answer:
NSOrderedSame
is defined as 0So if you call
caseInsensitiveCompare:
on anil
object you would getnil
. Then you comparenil
withNSOrderSame
(which is 0) you would get a match which of course is wrong.Also you will have to check if parameter passed to
caseInsensitiveCompare:
has to be not nil. From the documentation: