2013-03-28 64 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