Kotlin - 如何正确连接字符串

时间:2017-05-25 19:18:18

标签: string kotlin

一个非常基本的问题,在Kotlin中连接String的正确方法是什么?

在Java中,您将使用concat()方法,例如

String a = "Hello ";
String b = a.concat("World"); // b = Hello World

虽然Kotlin无法使用concat()功能。我应该使用+标志吗?

11 个答案:

答案 0 :(得分:101)

在Kotlin中,您可以使用string interpolation / templates连接:

val a = "Hello"
val b = "World"
val c = "$a $b"

输出结果为:Hello World

或者您可以使用+ / plus()运算符进行连接:

val a = "Hello"
val b = "World"
val c = a + b   // same as calling operator function a.plus(b)

print(c)

输出结果为:HelloWorld

或者您可以使用StringBuilder连接。

val a = "Hello"
val b = "World"

val sb = StringBuilder()
sb.append(a).append(b)
val c = sb.toString()

print(c)

输出结果为:HelloWorld

答案 1 :(得分:11)

kotlin.Stringplus方法:

a.plus(b)

有关详细信息,请参阅https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/plus.html

答案 2 :(得分:6)

是的,您可以使用+符号进行连接。 Kotlin有字符串模板,因此最好使用它们:

var fn = "Hello"
var ln = "World"

"$fn $ln"用于连接。

您甚至可以使用String.plus()方法。

答案 3 :(得分:6)

我同意上面接受的答案,但这仅适用于已知的字符串值。 对于动态字符串值,这是我的建议。

// A list may come from an API JSON like
{
   "persons": {
      "Person 1",
      "Person 2",
      "Person 3",
         ...
      "Person N"
   }
}
var listOfNames = mutableListOf<String>() 

val stringOfNames = listOfNames.joinToString(", ") 
// ", " <- a separator for the strings, could be any string that you want

// Posible result
// Person 1, Person 2, Person 3, ..., Person N

这对于用分隔符连接字符串列表很有用。

答案 4 :(得分:2)

类似于@Rhusfer的答案,我写了这个。如果您有一组EditText并想连接它们的值,则可以编写:

listOf(edit_1, edit_2, edit_3, edit_4).joinToString(separator = "") { it.text.toString() }

答案 5 :(得分:1)

在Kotlin中有多种连接字符串的方法 示例-

a = "Hello" , b= "World"
  1. 使用+运算符 a+b

  2. 使用plus()运算符

    a.plus(b)

注意-+仅在内部转换为.plus()方法

在上述两种方法中,由于字符串是不可变的,因此会创建一个新的字符串对象。如果要修改现有字符串,可以使用StringBuilder

StringBuilder str = StringBuilder("Hello").append("World")

答案 6 :(得分:1)

尝试一下,我认为这是在Kotlin中连接字符串的一种天然方法:

val result = stringBuild{
    append("a")
    append("b")
}

println(result)

// you will see "ab" in console.

答案 7 :(得分:1)

我建议如果您有一组有限且预定义的值,那么最有效且可读的方法是使用字符串模板(它使用字符串生成器来执行连接)。

val a = "Hello"
val b = "World"
val c = "$a  ${b.toUpperCase()} !"

println(c) //prints: Hello  WORLD !

另一方面,如果您有一组值,则使用 joinToString 方法。

val res = (1..100).joinToString(",")
println(res) //prints: 1,2,3,...,100

我认为这篇文章中的一些建议解决方案效率不高。就像使用 plus 或 + 或为有限的一组 entris 创建一个集合,然后对它们应用 joinToString

答案 8 :(得分:0)

yourString + =“ newString”

这样,您可以连接字符串

答案 9 :(得分:0)

在 Kotlin 中,我们可以使用 joinToString()

连接字符串数组
val tags=arrayOf("hi","bye")

val finalString=tags.joinToString (separator = ","){ "#$it" }

结果是:

<块引用>

#嗨,#再见


如果列表来自服务器

var tags = mutableListOf<Tags>() // list from server

val finalString=tags.joinToString (separator = "-"){ "#${it.tagname}" }

结果是:

<块引用>

#hi-#bye

答案 10 :(得分:0)

如果你有一个对象并且想要连接一个对象的两个值,比如

data class Person(
val firstName: String,
val lastName: String
)

那么简单地跟随是行不通的

val c = "$person.firstName $person.lastName"

在这种情况下正确的方法是

"${person.firstName} ${person.lastName}"

如果你想要在连接值之间的任何字符串,只需写在那里没有任何帮助符号。例如,如果我想要“名称是”,然后在名字和姓氏之间添加一个连字符

 "Name is ${person.firstName}-${person.lastName}"