2012-04-27 2 views
3

이상한 문제가 있습니다. isEqualtoString 메서드를 사용하여 비교할 UITextField 및 NSString이 있습니다. 문자열에 Ä, Ö, Ü와 같은 독일어 Umlaute가 포함되지 않는 한 모든 것이 잘 작동하지만 더 이상 작동하지 않으면 더 이상 작동하지 않습니다. NSLog는 Umlaute-String을 올바르게 제공합니다.NSString을 Ä, Ö, Ü와 비교합니다.

NSLog([currentAnswer lowercaseString]); 
NSLog([[self.antwortTextField text]lowercaseString]); 

if ([[currentAnswer lowercaseString] isEqualToString:[[self.antwortTextField text]lowercaseString]]) {......} 

어떻게 든 문자열을 포맷해야합니까? 이 문제는 나를 미치게 만듭니다!

+0

가능한 중복 : 특정 옵션에 관심이있을 수 있습니다 질문/2492379/sort-an-array-with-special-characters-iphone) –

답변

4

당신과 같은 고급 NSString 비교 방법, 사용할 수 있습니다

- (NSComparisonResult)compare:(NSString *)aString 
         options:(NSStringCompareOptions)mask 
         range:(NSRange)range 
         locale:(id)locale 

를 다음 고급 옵션을 지정합니다. - (http://stackoverflow.com/ [아이폰 특수 문자 배열을 정렬]의

  • NSCaseInsensitiveSearch
  • NSDiacriticInsensitiveSearch
  • NSWidthInsensitiveSearch
+0

죄송합니다. 비교적 새로운 Objective-C를 사용하고 있습니다. 내가 어떻게 그럴 수 있니? 나는 그것이 왜 처음에는 작동하지 않는지 전혀 모른다. 독일어는 고대 언어 나 다른 언어와 같지 않다 ;-) – JohannesRu

+1

아마도'bool isEqual = NSOrderedSame == [str1 비교 : str2 옵션 : NSCaseInsensitiveSearch | NSDiacriticInsensitiveSearch | NSWidthInsensitiveSearch];'또는 옵션의 일부 조합. 그 이유는 언어 일 수도 있고 로케일이나 인코딩 일 수도 있고 아니면 인코딩 일 수도 있습니다 ... – justin

+0

그래, 정말 고마워! – JohannesRu

관련 문제