比较À和常规A等特殊字符

时间:2014-04-06 11:50:46

标签: ios objective-c nsstring

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

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

这是关于NSHipser http://nshipster.com/cfstringtransform/

上的CFStringTransform的精彩文章
  

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