【问题标题】:compare special characters like À with regular A将 À 等特殊字符与常规 A 进行比较
【发布时间】:2014-04-06 11:50:45
【问题描述】:

在某些语言中,有 À 之类的字母,我看到对于表格视图部分,本机 iOS 将 À 放在与 A 相同的部分下。
我想做同样的事情,我通过比较第一个字母来构建我的部分,所以我需要 À 等于 A。
我尝试使用localizedCompare,但我仍然没有得到这两个是平等的。

有没有办法进行这种比较?或规范化À 所以它将是A

【问题讨论】:

  • 查看 NSString 比较函数的选项。这一切都在 NSString 文档中。

标签: ios objective-c nsstring


【解决方案1】:

不要按照其他答案进行转换或转换。首先,尝试-[NSString localizedStandardCompare:]。如果这不符合您的要求,请将选项中的NSDiacriticInsensitiveSearch 传递给NSString 比较方法之一(例如-compare:options:range:locale:)。您可能还想使用其他选项,例如 NSCaseInsensitiveSearch

【讨论】:

    【解决方案2】:

    您可以先将其转换为常规字母,然后进行比较。

    NSString *originalStr = @"À béautiful day";
    NSData *d = [originalStr dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
    NSString *converted = [[NSString alloc] initWithData:d encoding:NSASCIIStringEncoding];
    

    【讨论】:

      【解决方案3】:

      在 NSHipser http://nshipster.com/cfstringtransform/ 上有一篇关于 CFStringTransform 的精彩文章

      接下来,应用 kCFStringTransformStripCombiningMarks 变换来删除任何变音符号或重音符号。

      【讨论】:

        猜你喜欢
        • 2012-04-26
        • 2017-03-21
        • 1970-01-01
        • 1970-01-01
        • 2015-11-06
        • 2015-07-15
        • 2011-03-13
        • 1970-01-01
        • 2016-02-12
        相关资源
        最近更新 更多