【问题标题】:How to sort lines of a string in Swift?如何在 Swift 中对字符串的行进行排序?
【发布时间】:2016-10-11 12:28:33
【问题描述】:

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

【问题讨论】:

  • 为什么会出乎意料?你读过字符串排序以及它是如何工作的吗?您还没有指定您希望样本数据如何出现在结果中...
  • 您知道在某些语言中字母顺序有意区分大小写吗?
  • 感谢cmets,我编辑了问题。
  • 仅限英文吗?
  • 嗨,我的目标是在考虑本地设置的情况下创建一个排序列表

标签: arrays string swift sorting


【解决方案1】:

我会通过将您的排序代码更改为来解决这个问题

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

来自 Apple 文档:

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

Source

【讨论】:

    猜你喜欢
    • 2017-11-14
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    • 2018-10-10
    • 2010-09-08
    • 2012-01-29
    相关资源
    最近更新 更多