Kotlin String
字符串是一系列字符。例如,"Hello there!"
是一个字符串字面量。
在 Kotlin 中,所有字符串都是 String
类的对象。这意味着,像 "Hello there!"
这样的字符串字面量是该类的实例实现的。
如何创建 String 变量?
下面是如何在 Kotlin 中定义 String
变量的方法。例如:
val myString = "Hey there!"
这里,myString 是一个 String
类型的变量。
您可以在一个语句中声明 String
类型的变量并指定其类型,然后在程序后面的另一个语句中初始化该变量。
val myString: String ... .. ... myString = "Howdy"
如何访问字符串中的字符?
要访问字符串中的元素(字符),可以使用索引访问运算符。例如:
val myString = "Hey there!" val item = myString[2]
这里,item 变量包含 y,即 myString 字符串中的第三个字符。这是因为 Kotlin 中的索引从 0 开始,而不是从 1 开始。
val myString = "Hey there!" var item: Char item = myString[0] // item contains 'H' item = myString[9] // item contains '!' item = myString[10] // Error! String index is out of range item = myString[-1] // Error! String index is out of range
示例:遍历字符串
如果您需要遍历字符串中的元素,可以使用for 循环轻松完成。
fun main(args: Array<String>) {
val myString = "Hey!"
for (item in myString) {
println(item)
}
}
运行程序后,输出将是
H
e
y
!
Kotlin 中的字符串是不可变的
与 Java 一样,Kotlin 中的字符串也是不可变的。这意味着您不能更改字符串中的单个字符。例如:
var myString = "Hey!" myString[0] = 'h' // Error! Strings
但是,如果您使用 var
关键字声明了变量,则可以重新为该字符串变量赋值。(推荐阅读:Kotlin var 与 val)
示例:重新为字符串变量赋值。
fun main(args: Array<String>) {
var myString = "Hey!"
println("myString = $myString")
myString = "Hello!"
println("myString = $myString")
}
运行程序后,输出将是
myString = Hey! myString = Hello!
字符串字面量
字面量是固定值的源代码表示。例如,"Hey there!"
是一个字符串字面量,它直接出现在程序中,而无需进行计算(例如变量)。
Kotlin 中有两种字符串字面量:
1. 转义字符串
转义字符串可能包含转义字符。例如:
val myString = "Hey there!\n"
这里,\n
是一个转义字符,它在出现的位置插入一个换行符。
以下是 Kotlin 支持的转义字符列表:
\t
- 插入制表符\b
- 插入退格符\n
- 插入换行符\r
- 插入回车符\'
- 插入单引号字符\"
- 插入双引号字符\\
- 插入反斜杠\$
- 插入美元符号字符
2. 原生字符串
原生字符串可以包含换行符(不是换行转义字符)和任意文本。原生字符串由三个双引号 """
分隔。例如:
fun main(args: Array<String>) {
val myString = """
for (character in "Hey!")
println(character)
"""
print(myString)
}
运行程序后,输出将是
for (character in "Hey!") println(character)
您可以使用 trimMargin() 函数 删除原生字符串的前导空格。例如:
示例:打印原生字符串
fun main(args: Array<String>) {
println("Output without using trimMargin function:")
val myString = """
|Kotlin is interesting.
|Kotlin is sponsored and developed by JetBrains.
"""
println(myString)
println("Output using trimMargin function:\n")
println(myString.trimMargin())
}
运行程序后,输出将是
Output without using trimMargin function: |Kotlin is interesting. |Kotlin is sponsored and developed by JetBrains. Output using trimMargin function: Kotlin is interesting. Kotlin is sponsored and developed by JetBrains.
默认情况下,trimMargin()
函数使用 | 作为边界前缀。但是,您可以通过将一个新字符串传递给此函数来更改它。
示例:带参数的 trimMargin()
fun main(args: Array<String>) {
val myString = """
!!! Kotlin is interesting.
!!! Kotlin is sponsored and developed by JetBrains.
"""
println(myString.trimMargin("!!! "))
}
运行程序后,输出将是
Kotlin is interesting. Kotlin is sponsored and developed by JetBrains.
Kotlin String 模板
Kotlin 有一个很棒的功能叫做字符串模板,它允许字符串包含模板表达式。
字符串模板表达式以美元符号 $
开头。以下是一些示例:
示例:Kotlin String 模板
fun main(args: Array<String>) {
val myInt = 5;
val myString = "myInt = $myInt"
println(myString)
}
运行程序后,输出将是
myInt = 5
这是因为字符串中的表达式 $myInt(以 $ 符号开头的表达式)会被求值并连接到字符串中。
示例:带原生字符串的字符串模板
fun main(args: Array<String>) {
val a = 5
val b = 6
val myString = """
|${if (a > b) a else b}
"""
println("Larger number is: ${myString.trimMargin()}")
}
运行程序后,输出将是
Larger number is: 6
一些字符串属性和函数
由于 Kotlin 中的字面量是作为 String
类的实例实现的,因此您可以使用该类的各种方法和属性。
length
属性 - 返回字符串字符序列的长度。compareTo
函数 - 将此 String(对象)与指定的对象进行比较。如果对象与指定对象相等,则返回 0。get
函数 - 返回指定索引处的字符。
您可以使用索引访问运算符代替get
函数,因为索引访问运算符在内部调用get
函数。plus
函数 - 返回一个新字符串,该字符串是通过将此字符串与传递给此函数的字符串连接而成的。
您可以使用+
运算符代替plus
函数,因为+
运算符在底层调用plus
函数。subSequence
函数 - 返回一个从指定的开始和结束索引开始的新字符序列。
示例:字符串属性和函数
fun main(args: Array<String>) {
val s1 = "Hey there!"
val s2 = "Hey there!"
var result: String
println("Length of s1 string is ${s1.length}.")
result = if (s1.compareTo(s2) == 0) "equal" else "not equal"
println("Strings s1 and s2 are $result.")
// s1.get(2) is equivalent to s1[2]
println("Third character is ${s1.get(2)}.")
result = s1.plus(" How are you?") // result = s1 + " How are you?"
println("result = $result")
println("Substring is \"${s1.subSequence(4, 7)}\"")
}
运行程序时,输出将是:
Length of s1 string is 10. Strings s1 and s2 are equal. Third character is y. result = Hey there! How are you? Substring is "the"
访问 Kotlin String 类 以获取有关扩展属性、扩展、函数和构造函数的更多信息。