22

我如何在 Kotlin 中添加 aChar到 a 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 上调用+(eg plus) 时,没有接受右侧字符串的版本,因此'H' + "ello World"无法编译

第一个解决方法可能已经足够好了,但它对我来说是 Java 中的一种回归:(String test = 'H' + "ello World";编译得很好......)

我也不喜欢最后一种解决方法,至少在java.lang.String我有一个接受单个字符的构造函数中,或者我可以使用java.lang.Character.toString(char c). Kotlin 中是否有一种优雅的方式来做到这一点?

之前是否讨论过这个问题(向plus(str:String)Char 对象添加重载?)

4

2 回答 2

46

使用字符串模板怎么样,像这样:

val prepended = "$char$string"
于 2013-12-29T04:19:16.873 回答
3

从 kotlin 1.5 开始,在 上定义了一个扩展 plus operator函数Char,可用于连接 aChar和给定的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
于 2021-08-24T03:42:50.957 回答