如何在Swift中对字符串的行进行排序?

时间:2016-06-10 13:46:14

标签: arrays string swift sorting

我有一个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

1 个答案:

答案 0 :(得分:6)

我会通过将您的排序代码更改为

来解决此问题
let newArray = strArray.sort{$0.localizedCompare($1) == NSComparisonResult.OrderedAscending}

来自Apple文档:

  

重要:对于用户可见的排序列表,您应始终使用本地化比较。因此,您应该使用compare:caseInsensitiveCompare:来代替localizedCompare:localizedCaseInsensitiveCompare:

Source