如何在Kotlin中按字母顺序对字符串进行排序

时间:2019-04-11 16:29:26

标签: kotlin

我想将字符串“ hearty”重新排序为字母顺序:“ aehrty”

我尝试过:

val str = "hearty"
val arr = str.toCharArray()
println(arr.sort())

这将引发错误。我还尝试了.split("")的{​​{1}}方法。这也会引发错误。研究此事无济于事。

2 个答案:

答案 0 :(得分:4)

您需要使用sorted(),然后再使用joinToString将数组变回字符串:

val str = "hearty"
val arr = str.toCharArray()
println(arr.sorted().joinToString("")) // aehrty

注意:sort()将对其调用的数组进行突变,sorted()将返回一个新的排序数组,而原始数组保持不变。

答案 1 :(得分:2)

因此,您的问题是CharArray.sort()返回Unit(因为它是对数组进行的就地排序)。相反,您可以使用sorted()返回List<Char>,也可以执行以下操作:

str.toCharArray().apply { sort() }

或者,如果您只想返回字符串:

fun String.alphabetized() = String(toCharArray().apply { sort() })

那么您可以做:

println("hearty".alphabetized())