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

问题描述 投票:3回答:2

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

我试过了:

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

这会引发错误。我也用.split("")尝试了.sort()方法。这也会引发错误。研究这一点无处可去。

kotlin
2个回答
5
投票

您需要使用sorted()并在joinToString之后将数组转回String:

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

注意:sort()将改变它所调用的数组,sorted()将返回一个新的排序数组,保持原始状态不变。


3
投票

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

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

或者如果你只想要回来的话:

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

然后你可以这样做:

println("hearty".alphabetized())
© www.soinside.com 2019 - 2024. All rights reserved.