我有一个textView,我在其中输入文本,我想以编程方式对行进行排序(此处用作由换行符分隔的文本块)。例如:
Bravo
27
Charlie
Zulu
delta
012
Alfa
bravo
Delta
我试图将tex转换为数组,然后对数组进行排序,然后将数组连接到一个新字符串中。不幸的是,我得到了意想不到的结果,例如大写字母的单词在列表的开头分组,小写的单词在末尾列出。
这是我使用的代码:
let newStr = (the field) // pseudocode
let strArray : [String] = newStr.componentsSeparatedByString("\n")
let newArray = strArray.sort { $0 < $1 }
newStr = newArray.joinWithSeparator("\n")
(the field) = newStr // pseudocode
编辑:我想得到的结果是,将排序列表考虑到本地设置。例如,在我的情况下,将是:
012
27
Alfa
bravo
Bravo
Charlie
delta
Delta
Zulu
答案 0 :(得分:6)
我会通过将您的排序代码更改为
来解决此问题let newArray = strArray.sort{$0.localizedCompare($1) == NSComparisonResult.OrderedAscending}
来自Apple文档:
重要:对于用户可见的排序列表,您应始终使用本地化比较。因此,您应该使用
compare:
或caseInsensitiveCompare:
来代替localizedCompare:
或localizedCaseInsensitiveCompare:
。