【发布时间】:2013-03-28 22:26:45
【问题描述】:
我如何比较两个独立于字符的 NSString?
NSPredicate 提供==[d] 比较器。
但是我没有找到直接比较两个NSStrings 的方法。
例如,这两个字符串应该被认为是相同的:
ŠämpléŠtrïñg
示例字符串
【问题讨论】:
标签: iphone objective-c macos cocoa nsstring
我如何比较两个独立于字符的 NSString?
NSPredicate 提供==[d] 比较器。
但是我没有找到直接比较两个NSStrings 的方法。
例如,这两个字符串应该被认为是相同的:
ŠämpléŠtrïñg
示例字符串
【问题讨论】:
标签: iphone objective-c macos cocoa nsstring
NSString *s1 = @"Šämplé Štrïñg";
NSString *s2 = @"Sample String";
NSComparisonResult cmp = [s1 compare:s2 options:NSDiacriticInsensitiveSearch];
// --> cmp = NSOrderedSame
【讨论】:
contains:做到这一点?
rangeOfString:options: 与NSDiacriticInsensitiveSearch 选项一起使用。
使用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
【讨论】: