使用unicode字符串对数组进行排序

时间:2014-11-19 07:01:01

标签: arrays sorting swift unicode unicode-string

我有一个包含3个名字的数组。

var patients = ["Kund Karlsson", "Test Vid behov", "Test Övrigt"]

我需要按字母顺序对这些名称进行排序。这是它应该被命令的结果。

  1. Kund Karlsson
  2. Test Vid behov
  3. 测试Övrigt
  4. 我按照这个patients.sort({ $0 < $1 })对数组进行排序,但得错了顺序。

    1. Kund Karlsson
    2. 测试Övrigt
    3. Test Vid behov
    4. 我认为这是由unicode字母Ö引起的。

      当字符串中有unicode字符时,是否有办法处理排序?

      谢谢。

1 个答案:

答案 0 :(得分:4)

我想Ö在英语中被视为 O ,但对于所有语言而言可能都不是这样。您可以使用以下内容:

patients.sort {
    $0.localizedCaseInsensitiveCompare($1) == NSComparisonResult.OrderedDescending
}

结果取决于您系统的区域设置。要使用特定的区域设置:

var patients = ["Kund Karlsson", "Test Vid behov", "Test Övrigt"]
let locale = NSLocale(localeIdentifier: "sv_SE")
patients.sort {
    let str1 = $0 as NSString
    let str2 = $1 as NSString

    return str1.compare(str2, options: .CaseInsensitiveSearch, range: NSMakeRange(0, str1.length), locale: locale) == NSComparisonResult.OrderedAscending
}