【发布时间】:2018-03-02 22:13:31
【问题描述】:
我有一个字符串数组。这些字符串以字母和数字开头。通过使用 sorted 函数,我可以对数字进行排序,然后按字母顺序对字符串进行排序。
let tricks = [ "360", "540", "720", "Blunt", "Nose Grind", "Method Air", "360 Mute Grab", "Japan Air"]
let sortedTricks = tricks.sorted { $0.lowercased() < $1.lowercased() }
print(sortedTricks)
// ["360", "360 Mute Grab", "540", "720", "Blunt", "Japan Air", "Method Air", "Nose Grind"]
如何先对字母进行升序排序,然后再对数字进行升序排序?最终,这就是我希望上面的打印方式:
// ["Blunt", "Japan Air", "Method Air", "Nose Grind", "360", "360 Mute Grab", "540", "720"]
【问题讨论】:
-
不以字母 A-Z 或数字 0-9 开头的字符串怎么办?
-
@rmaddy - 所有字符串都应该以 0-9、A-Z 开头,但是,任何其他字符(如果它们最终出现在数据中)应该被推到最后。这里的真正目标是首先显示 A-Z,然后在排序后的字母之后显示其他任何内容(数字、字符等)。
-
您想要的输出中的字母“降序排序”在什么意义上?在我看来,Blunt 和 Nose Grind 等都与原始输入中的顺序相同。数字似乎是上升的,而不是下降的。您声称的所需输出与您的描述完全不符。
-
@Matt,很抱歉!我在编辑操场的时候发帖,所以我粘贴了两个不同的结果。我也不小心写了降序而不是升序。原始帖子已被编辑。
-
那么在下面的回答中说
nonnumbers.sorted()而不是nonnumbers。但即便如此,也不清楚你真正追求的是什么。数字的排序对我来说似乎是任意的。
标签: arrays swift string sorting