it-source

대소문자를 구분하지 않는 비교 NSString

criticalcode 2023. 4. 11. 22:06
반응형

대소문자를 구분하지 않는 비교 NSString

Objective C에서 대소문자를 구분하지 않는 비교에 대한 리소스를 가르쳐 주실 수 있습니까?와 동등한 방법은 없는 것 같습니다.str1.equalsIgnoreCase(str2)

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

이 문서는 검색비교 방법에 있습니다.

 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
}

주요 이점은 0 문자열의 비교에 관해 matm에 의해 설명되는 잠재적인 문제를 피할 수 있다는 것입니다.다음 중 하나를 수행하기 전에 문자열이 0이 아님을 확인할 수 있습니다.compare:options:(나처럼) 귀찮아서 비교마다 새로운 문자열을 작성하는데 드는 추가 비용을 무시할 수도 있습니다(비교를 1~2개만 하는 경우 최소).

새로운 방법 iOS 8

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

string.localizedCaseInsensitiveContainsString(substring) // true
- (NSComparisonResult)caseInsensitiveCompare:(NSString *)aString

이 방법을 사용해 보세요.

- (NSComparisonResult)caseInsensitiveCompare:(NSString *)aString

Jason Coco의 Swift에 대한 답변을 매우 게으른 사람들을 위해 변환:)

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

iPhone Contact App에서와 같이 접두사를 사용하여 확인합니다.

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

블로그는 나에게 유용했다.

신속한 대체 솔루션:

양쪽 대소문자를 작성하려면:

예:

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

또는 두 개의 소문자를 모두 만듭니다.

예:

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];
}

언급URL : https://stackoverflow.com/questions/2582306/case-insensitive-comparison-nsstring

반응형