2013-03-28 66 views
0

如何比较两个NSString,字符无关?NSString比较特殊字符无关

NSPredicate提供==[d]比较器。
但是我没有找到直接比较两个NSString的方法。


对于exapmle,这两个字符串应该被认为是相同的:

样本串

样品字符串

回答

3
NSString *s1 = @"Šämplé Štrïñg"; 
NSString *s2 = @"Sample String"; 
NSComparisonResult cmp = [s1 compare:s2 options:NSDiacriticInsensitiveSearch]; 
// --> cmp = NSOrderedSame 
+0

酷,你怎么能'包含做到这一点? – NSAddict

+0

您可以使用'rangeOfString:options:'与'NSDiacriticInsensitiveSearch'选项。 –

2

使用compare:options:

NSString *str1 = ...; 
NSString *str2 = ...; 
NSComparisonResult result = [str1 compare:str2 options:NSDiacriticInsensitiveSearch | NSCaseInsensitiveSearch | NSWidthInsensitiveSearch]; 

如果你想要做其他动作与字符串,可以折叠两个字符串到他们的简单形式:`:

NSString *fold1 = [str1 stringByFoldingWithOptions:NSDiacriticInsensitiveSearch | NSCaseInsensitiveSearch | NSWidthInsensitiveSearch locale:[NSLocale currentLocale]]; 
NSString *fold2 = [str2 stringByFoldingWithOptions:NSDiacriticInsensitiveSearch | NSCaseInsensitiveSearch | NSWidthInsensitiveSearch locale:[NSLocale currentLocale]]; 
NSRange range = [fold1 rangeOfString:fold2]; // or other string comparisons 
+0

很好的答案,但**马丁R **更快;) – NSAddict