如何在Kotlin中将字符“前置”到字符串

soat7uwm  于 2022-12-23  发布在  Kotlin
关注(0)|答案(3)|浏览(146)

在Kotlin中,如何将Char前置到String
例如:

fun main(args: Array<String>) {
  val char = 'H'
  val string = "ello World"
  val appendingWorks = string + char //but not what I want...
  //val prependingFails = char + string //no .plus(str:String) version
  val prependingWorkaround1 = char.toString() + string
  val prependingWorkaround2 = "" + char + string
  val prependingWorkaround3 = String(charArray(char)) + string

}

当尝试在Char上调用+(例如plus)时,右侧没有接受String的版本,因此'H' + "ello World"无法编译
第一个变通方法可能已经足够好了,但对我来说,它是对Java工作的一个回归:String test = 'H' + "ello World";(编译良好...)
我也不喜欢最后一种解决方法,至少在java.lang.String中我有一个接受单个字符的构造函数,或者我可以使用java.lang.Character.toString(char c)
之前是否讨论过这一点(向Char对象添加plus(str:String)重载?)

zhte4eai

zhte4eai1#

使用字符串模板怎么样,如下所示:

val prepended = "$char$string"
idfiyjo8

idfiyjo82#

从Kotlin1.5开始,在Char上定义了一个extensionplusoperator函数,它可以用来将一个Char与给定的String连接起来。

val char = 'H'
val string = "ello World"

// Use the function call syntax
val result1 = char.plus(string)

// or use the operator syntax
val result2 = char + string
edqdpe6u

edqdpe6u3#

如果您想只使用对字符串的方法调用来真正地为该字符串添加前缀,可以执行以下操作:

val str = "ello World!"
println(str.let { 'H' + it })

如果str是一个大型复杂的方法调用链,这种方法会很有用:

val squares = ... // 10x10 array of square numbers
println(squares.joinToString("\n") { 
    it.joinToString(" ") { "%03d".format(it) }
}.let { "Squares:\n" + it })

相关问题