在某些語言中有像À
這樣的字母,我看到對於表格視圖部分,原生iOS將À
放在與A
相同的部分下。
我想做同樣的事情,我通過比較第一個字母來構建我的部分,所以我需要À
將等於A.
我試過使用localizedCompare
但我仍然沒有弄明白那兩個是等於。比較特殊字符,如À與常規A
有沒有辦法對這種比較?或正常化À
所以它會是A
?
在某些語言中有像À
這樣的字母,我看到對於表格視圖部分,原生iOS將À
放在與A
相同的部分下。
我想做同樣的事情,我通過比較第一個字母來構建我的部分,所以我需要À
將等於A.
我試過使用localizedCompare
但我仍然沒有弄明白那兩個是等於。比較特殊字符,如À與常規A
有沒有辦法對這種比較?或正常化À
所以它會是A
?
您可以先將其轉換爲常規字母,然後進行比較。
NSString *originalStr = @"À béautiful day";
NSData *d = [originalStr dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *converted = [[NSString alloc] initWithData:d encoding:NSASCIIStringEncoding];
下面是關於CFStringTransform
上NSHipser http://nshipster.com/cfstringtransform/一個偉大的文章
接下來,應用kCFStringTransformStripCombiningMarks改造,以消除任何變音符號或重音。
不要根據其他答案進行轉換或轉換。首先,嘗試-[NSString localizedStandardCompare:]
。如果這樣做不符合要求,請將NSDiacriticInsensitiveSearch
通過NSString
比較方法(如-compare:options:range:locale:
)中的一個通過選項。您也可能想要使用其他選項,例如NSCaseInsensitiveSearch
。
查看NSString比較函數的選項。它在NSString文檔中都有。 – gnasher729