【问题标题】:NSString compare special character independentNSString 比较特殊字符独立
【发布时间】:2013-03-28 22:26:45
【问题描述】:

我如何比较两个独立于字符的 NSString?

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


例如,这两个字符串应该被认为是相同的:

ŠämpléŠtrïñg

示例字符串

【问题讨论】:

    标签: iphone objective-c macos cocoa nsstring


    【解决方案1】:
    NSString *s1 = @"Šämplé Štrïñg";
    NSString *s2 = @"Sample String";
    NSComparisonResult cmp = [s1 compare:s2 options:NSDiacriticInsensitiveSearch];
    // --> cmp = NSOrderedSame
    

    【讨论】:

    • 酷,你怎么能用contains:做到这一点?
    • 您可以将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
    

    【讨论】:

    • 很好的答案,但 Martin R 更快;)
    猜你喜欢
    • 2011-11-26
    • 2017-05-02
    • 2016-10-29
    • 1970-01-01
    • 2012-05-14
    • 2011-12-28
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多