不区分大小写的比较NSString

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不区分大小写的比较NSString相关的知识,希望对你有一定的参考价值。

任何人都可以向我指出有关Objective C中不区分大小写的比较的任何资源吗?它似乎没有与str1.equalsIgnoreCase(str2)等效的方法

答案
if( [@"Some String" caseInsensitiveCompare:@"some string"] == NSOrderedSame ) {
  // strings are equal except for possibly case
}

该文档位于Search and Comparison Methods

另一答案

替代swift的解决方案:

要同时制作UpperCase:

e.g:

if ("ABcd".uppercased() == "abcD".uppercased()){
}

或者同时制作LowerCase:

e.g:

if ("ABcd".lowercased() == "abcD".lowercased()){
}
另一答案

在macOS上你可以简单地使用-[NSString isCaseInsensitiveLike:],它就像BOOL一样返回-isEqual:

if ([@"Test" isCaseInsensitiveLike: @"test"])
    // Success
另一答案
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];
}
另一答案
 NSString *stringA;
 NSString *stringB;

 if (stringA && [stringA caseInsensitiveCompare:stringB] == NSOrderedSame) {
     // match
 }

注意:stringA &&是必需的,因为当stringAnil时:

 stringA = nil;
 [stringA caseInsensitiveCompare:stringB] // return 0

因此,NSOrderedSame也被定义为0

以下示例是一个典型的陷阱:

 NSString *rank = [[NSUserDefaults standardUserDefaults] stringForKey:@"Rank"];
 if ([rank caseInsensitiveCompare:@"MANAGER"] == NSOrderedSame) {
     // what happens if "Rank" is not found in standardUserDefaults
 }
另一答案

如果您想要更多控制而不仅仅是不区分大小写,那么另一种选择是:

[someString compare:otherString options:NSCaseInsensitiveSearch];

数字搜索和变音不敏感是两个方便的选择。

另一答案

在比较之前,您可以始终确保它们处于相同的情况:

if ([[stringX uppercaseString] isEqualToString:[stringY uppercaseString]]) {
    // They're equal
}

主要好处是您可以避免matm描述的有关比较零字符串的潜在问题。您可以在执行其中一个compare:options:方法之前检查字符串是否为nil,或者您可能是懒惰的(像我一样)并忽略为每个比较创建新字符串的额外成本(如果您只是做的话,这是最小的一两次比较)。

另一答案
- (NSComparisonResult)caseInsensitiveCompare:(NSString *)aString
另一答案

一种新的方法。 ios 8

let string: NSString = "Café"
let substring: NSString = "É"

string.localizedCaseInsensitiveContainsString(substring) // true
另一答案

试试这个方法

- (NSComparisonResult)caseInsensitiveCompare:(NSString *)aString
另一答案

转换Jason Coco对Swift的回答是非常懒惰的:)

if ("Some String" .caseInsensitiveCompare("some string") == .OrderedSame)
{
  // Strings are equal.
}
另一答案

检查iPhone ContactApp中的前缀

([string rangeOfString:prefixString options:NSCaseInsensitiveSearch].location == 0)

this博客对我很有用

以上是关于不区分大小写的比较NSString的主要内容,如果未能解决你的问题,请参考以下文章

ios 不区分字符串大小写的比较

Swift3.0语言教程比较判断字符串

NSString hasPrefix:区分大小写的函数

版本号带两个小数点的,如何比较大小?( NSStringCompareOptions )

如何在 Win32 控制台应用程序中将 argv[] 设置为不区分大小写?

如何执行不区分大小写的字符串比较? [复制]