arrays - Swift:使用替代比较对数组进行排序

标签 arrays swift sorting localization case-sensitive

我想使用另一种比较方法(如 localizedCompare、caseInsensitiveCompare 或 localizedCaseInsensitiveCompare)对我的 swift 结构数组进行排序。 swift 标准字符串数组排序函数将所有大写字母排在小写字母之前。这是我的代码:

import Foundation

struct DataStruct {

    struct Item {
        let title: String
        let number: Int
    }

        static var items = [
        Item(title: "apple", number: 30),
        Item(title: "Berry", number: 9),
        Item(title: "apple", number: 18)]
}

class DataFunctions {
    func sortItemsArrayTitle() {
        DataStruct.items.sort { $0.title < $1.title }
    }
}

调用后,上述代码会生成 [Berry, apple, apple]。 Not Acceptable 。有什么建议吗?

最佳答案

通过比较title lowercaseString 可以轻松解决,如下:

DataStruct.items.sort { $0.title.lowercaseString < $1.title.lowercaseString }

使用 localizedCompare 它应该是这样的:

DataStruct.items.sort { $0.title.localizedCompare($1.title) == .OrderedAscending } 

关于arrays - Swift:使用替代比较对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30418553/

相关文章:

c++ - 使用 OpenMP 并行化选择排序

java - 我正在尝试找到字符串的反转

java - 从数组中计算可行的子列表长度

ios - 在用 Swift 编写的 iOS 应用程序中实现 Shopify

Swift UITextView 事件监听器

Java Comparator 使用 .reverseOrder() 但有一个内部类

Java计算排序数组中每个项目的出现次数

javascript - 如何使用javascript在空数组中的特定索引处插入文件对象?

ios - 将项目附加到数组会覆盖以前的项目并添加新项目

sql-server-2008 - sql中的拓扑排序