2016-06-10 134 views
1

我有一个textView,我输入文本,我想以编程方式排序行(这里打算用换行符分隔的文本块)。例如:如何在Swift中对字符串进行排序?

Bravo 
27 
Charlie 
Zulu 
delta 
012 
Alfa 
bravo 
Delta 

我想对TEX转换为数组,然后排序数组,然后joying在一个新的字符串数组。不幸的是,我得到了意想不到的结果,例如带大写字母的单词在列表的开头分组,小写字母列在最后。

这是我使用的代码:

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

为什么是意外?你有没有读过关于字符串排序和它是如何工作的?您还没有指定您希望样本数据如何显示在结果中...... – Wain

+0

您是否明白在某些语言中字母顺序是故意区分大小写的? – Sulthan

+0

谢谢你的评论,我编辑了这个问题。 – Cue

回答

6

我会改变你的排序代码解决这个问题

let newArray = strArray.sort{$0.localizedCompare($1) == NSComparisonResult.OrderedAscending} 

从苹果文档:

重要:对于用户可见的排序列表,你应该总是使用本地化的比较。因此,通常应使用localizedCompare:localizedCaseInsensitiveCompare:而不是compare:caseInsensitiveCompare:

Source

相关问题