将char数组转换为字符串的一些问题

时间:2019-07-05 19:02:33

标签: arrays string kotlin char

早上好,我是初学者,遇到了一些问题:

我想使用此代码将此"ромка"或此"роМка"转换为"Ромка"。我的代码还可以。我对toString()有疑问。

  

仅使用一个第一个高位字符重写字符串。   将charArray转换为String

时出现问题
var name = "ромка"
var charName = name.toLowerCase().toCharArray()
charName[0] = charName[0].toUpperCase()

name = charName.toString()

结果:

charName: {'Р', 'о', 'м', 'к', 'а'}

name == "[C@93ec54"

Screenshot

3 个答案:

答案 0 :(得分:3)

var name = "ромка"
val result = name.toLowerCase().capitalize()

答案 1 :(得分:2)

    var name = "ромка"
    var charName = name.toLowerCase().toCharArray()
    charName[0] = charName[0].toUpperCase()

    name = String(charName)

答案 2 :(得分:1)

toString()如此工作的原因是,在运行时Kotlin数组用JVM数组类型表示,因此例如CharArray在运行时是char[]。这些JVM类型没有提供toStringequalshashCode方法的有意义的实现。

相反,Kotlin为数组提供了扩展功能contentToStringcontentEqualscontentHashCode。这些函数的实现方式就像数组是一个列表一样,例如contentToString将从问题中返回数组的[Р, о, м, к, а]

但是,如果要将char数组中的所有char连接为字符串,则应使用另一个函数:Kotlin / JVM中可用的String(CharArray)或所有用户都可以使用的实验扩展名CharArray.concatToString()从Kotlin 1.3.40开始的平台。

最后,如果您的任务是大写第一个字符,那么{@ 1}}函数将为您执行所有这些操作,就像@Francesc在他的answer中所建议的那样。