谁能告诉我Objective C中不区分大小写比较的资料?它似乎没有与str1.equalsIgnoreCase(str2)等效的方法
当前回答
- (NSComparisonResult)caseInsensitiveCompare:(NSString *)aString
其他回答
NSMutableArray *arrSearchData;
NSArray *data=[arrNearByData objectAtIndex:i];
NSString *strValue=[NSString stringWithFormat:@"%@", [data valueForKey:@"restName"]];
NSRange r = [strValue rangeOfString:key options:NSCaseInsensitiveSearch];
if(r.location != NSNotFound)
{
[arrSearchData addObject:data];
}
在比较之前,你总是可以确保它们在相同的情况下:
if ([[stringX uppercaseString] isEqualToString:[stringY uppercaseString]]) {
// They're equal
}
主要的好处是避免了matm中关于比较空字符串的潜在问题。你可以在做一个compare:options:方法之前检查字符串是不是nil,或者你可以偷懒(像我一样),忽略为每次比较创建新字符串的额外成本(如果你只做一两次比较,这是最小的)。
试试这个方法
- (NSComparisonResult)caseInsensitiveCompare:(NSString *)aString
把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()){
}
推荐文章
- 是否可以为iPhone应用程序(如YouTube和地图)注册一个基于http+域的URL方案?
- 模拟器错误fbssystemservicdomain代码4
- 开始使用instancetype而不是id是否有益?
- 改变UISegmentedControl的字体大小
- 我可以强制UITableView隐藏分隔符之间的空单元格吗?
- 为什么Objective-C文件使用。m扩展名?
- Objective-C for Windows
- 获取用户当前位置/坐标
- 获得推送通知,而应用程序在前台iOS
- 如何取消选定的UITableView单元格?
- 设置自定义UITableViewCells的高度
- 在SwiftUI中创建一个VStack填充屏幕宽度
- 移动文本字段时,键盘出现迅速
- 让iPhone震动
- 将NSString转换为NSDate(然后再转换回来)