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

20

我想要将字符串"hearty"重新排列,以按字母顺序排列:"aehrty"

我已经尝试过:

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

这会抛出一个错误。我还尝试使用.split("")方法和.sort(),但也抛出了错误。

2个回答

32
你需要使用sorted(),然后使用joinToString将数组转换回字符串:
val str = "hearty"
val arr = str.toCharArray()
println(arr.sorted().joinToString("")) // aehrty
注意: sort() 会改变它被调用的数组,而sorted()会返回一个新的已排序的数组,原始数组不受影响。

8
您的问题是CharArray.sort()返回Unit(因为它对数组进行原地排序)。替代方法是使用sorted(),它返回一个List<Char>,或者您可以尝试以下操作:
str.toCharArray().apply { sort() }

或者如果你只想要字符串返回:
fun String.alphabetized() = String(toCharArray().apply { sort() })

然后您可以执行以下操作:
println("hearty".alphabetized())

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接