Tej*_*udi 237 cocoa-touch objective-c nsstring ios
任何人都可以向我指出有关Objective C中不区分大小写的比较的任何资源吗?它似乎没有一个等效的方法str1.equalsIgnoreCase(str2)
Jas*_*oco 558
if( [@"Some String" caseInsensitiveCompare:@"some string"] == NSOrderedSame ) {
// strings are equal except for possibly case
}
Run Code Online (Sandbox Code Playgroud)
该文档位于搜索和比较方法中
ohh*_*hho 49
NSString *stringA;
NSString *stringB;
if (stringA && [stringA caseInsensitiveCompare:stringB] == NSOrderedSame) {
// match
}
Run Code Online (Sandbox Code Playgroud)
注意: stringA &&
是必需的,因为时间stringA
是nil
:
stringA = nil;
[stringA caseInsensitiveCompare:stringB] // return 0
Run Code Online (Sandbox Code Playgroud)
所以发生的事情NSOrderedSame
也被定义为0
.
以下示例是一个典型的陷阱:
NSString *rank = [[NSUserDefaults standardUserDefaults] stringForKey:@"Rank"];
if ([rank caseInsensitiveCompare:@"MANAGER"] == NSOrderedSame) {
// what happens if "Rank" is not found in standardUserDefaults
}
Run Code Online (Sandbox Code Playgroud)
dra*_*ard 46
如果您想要更多控制而不仅仅是不区分大小写,那么另一种选择是:
[someString compare:otherString options:NSCaseInsensitiveSearch];
Run Code Online (Sandbox Code Playgroud)
数字搜索和变音不敏感是两个方便的选择.
chr*_*ood 23
在比较之前,您可以始终确保它们处于相同的情况:
if ([[stringX uppercaseString] isEqualToString:[stringY uppercaseString]]) {
// They're equal
}
Run Code Online (Sandbox Code Playgroud)
主要好处是您可以避免matm描述的有关比较零字符串的潜在问题.您可以在执行其中一个compare:options:
方法之前检查字符串是否为nil ,或者您可能是懒惰的(像我一样)并忽略为每个比较创建新字符串的额外成本(如果您只执行一个或两个比较).
- (NSComparisonResult)caseInsensitiveCompare:(NSString *)aString
Run Code Online (Sandbox Code Playgroud)
一种新的方法.iOS 8
let string: NSString = "Café"
let substring: NSString = "É"
string.localizedCaseInsensitiveContainsString(substring) // true
Run Code Online (Sandbox Code Playgroud)
小智 6
试试这个方法
- (NSComparisonResult)caseInsensitiveCompare:(NSString *)aString
Run Code Online (Sandbox Code Playgroud)
转换Jason Coco对Swift的回答是非常懒惰的:)
if ("Some String" .caseInsensitiveCompare("some string") == .OrderedSame)
{
// Strings are equal.
}
Run Code Online (Sandbox Code Playgroud)
检查iPhone ContactApp中的前缀
([string rangeOfString:prefixString options:NSCaseInsensitiveSearch].location == 0)
Run Code Online (Sandbox Code Playgroud)
这个博客对我很有用
归档时间: |
|
查看次数: |
108285 次 |
最近记录: |