谁能告诉我Objective C中不区分大小写比较的资料?它似乎没有与str1.equalsIgnoreCase(str2)等效的方法
当前回答
把Jason Coco的答案转换成Swift的懒人版:)
if ("Some String" .caseInsensitiveCompare("some string") == .OrderedSame)
{
// Strings are equal.
}
其他回答
swift的替代解决方案:
要使两者都大写:
e.g:
if ("ABcd".uppercased() == "abcD".uppercased()){
}
或使两者都小写:
e.g:
if ("ABcd".lowercased() == "abcD".lowercased()){
}
- (NSComparisonResult)caseInsensitiveCompare:(NSString *)aString
if( [@"Some String" caseInsensitiveCompare:@"some string"] == NSOrderedSame ) {
// strings are equal except for possibly case
}
文档位于搜索和比较方法
试试这个方法
- (NSComparisonResult)caseInsensitiveCompare:(NSString *)aString
在比较之前,你总是可以确保它们在相同的情况下:
if ([[stringX uppercaseString] isEqualToString:[stringY uppercaseString]]) {
// They're equal
}
主要的好处是避免了matm中关于比较空字符串的潜在问题。你可以在做一个compare:options:方法之前检查字符串是不是nil,或者你可以偷懒(像我一样),忽略为每次比较创建新字符串的额外成本(如果你只做一两次比较,这是最小的)。
推荐文章
- 在Objective-C中@synchronized如何锁定/解锁?
- Xcode构建失败“架构x86_64未定义的符号”
- 如何使用Xcode创建。ipa文件?
- 动态改变UILabel的字体大小
- registerForRemoteNotificationTypes: iOS 8.0及以上版本不支持
- 新的自动引用计数机制是如何工作的?
- 如何测试对象在Objective-C中的类?
- 在iPhone上确定用户是否启用了推送通知
- 是否有可能禁用浮动头在UITableView与UITableViewStylePlain?
- 从Cocoa应用程序执行一个终端命令
- 错误ITMS-9000:“冗余二进制文件上传。火车1.0版本已经有一个二进制版本上传。
- Swift -转换为绝对值
- Swift编译器错误:“框架模块内的非模块化头”
- 从父iOS访问容器视图控制器
- 自定义dealloc和ARC (Objective-C)