早上好,我是初学者,遇到了一些问题:
我想使用此代码将此"ромка"
或此"роМка"
转换为"Ромка"
。我的代码还可以。我对toString()
有疑问。
仅使用一个第一个高位字符重写字符串。 将
时出现问题charArray
转换为String
var name = "ромка"
var charName = name.toLowerCase().toCharArray()
charName[0] = charName[0].toUpperCase()
name = charName.toString()
结果:
charName: {'Р', 'о', 'м', 'к', 'а'}
name == "[C@93ec54"
答案 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类型没有提供toString
,equals
和hashCode
方法的有意义的实现。
相反,Kotlin为数组提供了扩展功能contentToString
,contentEquals
和contentHashCode
。这些函数的实现方式就像数组是一个列表一样,例如contentToString
将从问题中返回数组的[Р, о, м, к, а]
。
但是,如果要将char数组中的所有char连接为字符串,则应使用另一个函数:Kotlin / JVM中可用的String(CharArray)
或所有用户都可以使用的实验扩展名CharArray.concatToString()
从Kotlin 1.3.40开始的平台。
最后,如果您的任务是大写第一个字符,那么{@ 1}}函数将为您执行所有这些操作,就像@Francesc在他的answer中所建议的那样。