最简单的方法是使用sorted():
let words = ["Hello", "Bonjour", "Salute", "Ahola"] let sortedWords = words.sorted() print(sortedWords) // ["Ahola", "Bonjour", "Hello", "Salute"]
或者 sort()
var mutableWords = ["Hello", "Bonjour", "Salute", "Ahola"] mutableWords.sort() print(mutableWords) // ["Ahola", "Bonjour", "Hello", "Salute"]
您可以将闭包作为排序参数:
let words = ["Hello", "Bonjour", "Salute", "Ahola"] let sortedWords = words.sorted(isOrderedBefore: { $0 > $1 }) print(sortedWords) // ["Salute", "Hello", "Bonjour", "Ahola"]
尾随闭包的替代语法:
let words = ["Hello", "Bonjour", "Salute", "Ahola"] let sortedWords = words.sorted() { $0 > $1 } print(sortedWords) // ["Salute", "Hello", "Bonjour", "Ahola"]
但是,如果数组中的元素不一致,则会出现意外结果:
let words = ["Hello", "bonjour", "Salute", "ahola"] let unexpected = words.sorted() print(unexpected) // ["Hello", "Salute", "ahola", "bonjour"]
要解决此问题,请对元素的小写版本进行排序:
let words = ["Hello", "bonjour", "Salute", "ahola"] let sortedWords =words.sorted{ $0.lowercased() < $1.lowercased() } print(sortedWords) // ["ahola", "bonjour", "Hello", "Salute"]
或者import Foundation使用NSString的比较方法,例如caseInsensitiveCompare:
let words = ["Hello", "bonjour", "Salute", "ahola"] let sortedWords =words.sorted{ $0.caseInsensitiveCompare($1) == .orderedAscending } print(sortedWords) // ["ahola", "bonjour", "Hello", "Salute"]
或者,使用localizedCaseInsensitiveCompare可以管理变音符号。
要按字符串所包含的数值对字符串进行正确排序,请compare与以下.numeric选项一起使用:
let files = ["File-42.txt", "File-01.txt", "File-5.txt", "File-007.txt", "File-10.txt"] let sortedFiles = files.sorted() { $0.compare($1, options: .numeric) == .orderedAscending } print(sortedFiles) // ["File-01.txt", "File-5.txt", "File-007.txt", "File-10.txt", "File-42.txt"]
问题内容: 我有一个包含多个数组的数组,我想根据这些数组中的某个字符串对数组进行排序。 如何按名称排序,以便 阿尔伯特排 在首位, 齐默尔曼排 在最后? 我知道如果可以使用整数进行排序,但是字符串使我毫无头绪,该怎么办。 谢谢您帮忙!:) 问题答案: 这可以通过将支持函数作为参数传递给方法调用来实现。 像这样:
问题内容: 允许用户使用字符串数组进行演奏。他们可以将字符串添加到数组中,从数组中删除字符串,在数组中搜索字符串,最终他们将能够对数组进行排序。排序使我很困惑。我尝试了几种不同的方法。第一种方法是将数组转换为ArrayList并使用Collections对ArrayList进行排序,然后将其转换回静态类数组。没用 我尝试的第二种方法是遍历数组,并尝试仅对用户添加的字符串进行排序,而不是对数组中的所
我主要是一个VB.NET程序员,对VTL(Velocity Template Language)非常陌生。我目前正试图定制一个应用程序,使用Velocity模板和Jython。 我在一个现有文件中有以下VTL代码。以下代码从一个JSON文件中获得一些键值对,并将它们以一个简洁的表形式输出到浏览器: 我可以显示$keyset数组: 我试图做的是按字母顺序对$keyset数组中的字符串进行排序。 我尝
问题内容: 我有这样的txt文件中的数据列表 我的任务是按照每个标准对这些数据进行排序,例如)按日期,纬度和经度排序 我尝试像这样的泡沫排序 这可行,但是需要太多时间 那里有在txt文件数据 有没有其他方法可以对这些数据进行排序? 问题答案: 我可能会破坏一些学生的家庭作业,但是这里… 正如课题所建议的那样,Java的自然方法是创建一个表示您的数据的类。然后实现一个将传递给实用方法的方法。 在运行
问题内容: 我currentyl不知道如何对包含PHP中UTF-8编码字符串的数组进行排序。该数组来自LDAP服务器,因此通过数据库排序(不会有问题)不是解决方案。以下内容不适用于我的Windows开发计算机(尽管我认为这至少应该是一个可能的解决方案): 输出为: 这是完全废话。使用1252作为的代码页会提供另一种输出,但仍然是一个明显错误的输出: 有没有一种方法可以对具有UTF-8字符串语言环境
对于这个项目,我得到了一个字符串数组和一个整数数组。int[1]是字符串[1]的排名。我需要使用mergesort按1到n的顺序对int数组进行排序,我在下面已经完成了这项工作。但是当int数组被移动时,我还需要切换字符串数组的位置,以便它们都被排序,如果这有意义的话?我不知道我的编码有什么问题,甚至我的想法是否真的有效,但我一直在stringSorted[k]=stringRight[j]上得到