本地化字符串比较

时间:2016-08-30 12:03:29

标签: ios swift string localization

我使用UILocalizedIndexedCollation来获取本地sectionIndexTitles的数组。 现在我想检查一个字符串,如果它以这些sectionIndexTitles中的某个元素开头。

假设我的语言是韩语,sectionIndexTitles就是这样:

"ㄱ,ㄴ,ㄷ,ㄹ,ㅁ,ㅂ,ㅅ,ㅇ,ㅈ,ㅊ,ㅋ,ㅌ,ㅍ,ㅎ,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,#" 

问题

如何检查String"나비"以"ㄴ"?

开头

问题在于第一个"字符"是"나"和"ㄴ"永远不会孤立于一个角色。因此,似乎sectionIndexTitles实际上应该包含第一个字符组合,例如

"ㄴ".characters.first // "ㄴ"
"나비".characters.first // "나"
"나비".hasPrefix("ㄴ") // false
"나비".localizedStandardRange(of: "ㄴ") // nil

更新,跟进您的评论:

"나비".range(of: "ㄴ") // nil

更新2:问题

如何创建字母部分标题,例如" A"," B"," C",...并放入本地化的字符串元素喜欢"나비"?

例如韩语有第一个"字符"的各种组合,所以 来自sectionIndexTitles的{​​{1}}(例如"ㄴ")无法用于将元素排序到右侧部分

1 个答案:

答案 0 :(得分:1)

缩放字符,我看到"나""ㄴ" 以两个不同的视觉元素开始

第一种情况下的“L”视觉元素具有弯曲的水平部分

enter image description here

而在第二个(你想要匹配的那封信)没有。

enter image description here

所以我认为,如果您想要按层次结构组织数据,那么以"나"开头的字符串应该只包含在"#"部分中(据我了解UILocalizedIndexedCollation this tutorial)。

基本上,如果"나비".hasPrefix("ㄴ")false,那么它是false ...所以应该处理它。