Kotlin String(字符串)
字符串是字符序列。例如,"Hello there!"是字符串字面量。
在Kotlin中,所有字符串都是String类的对象。 这意味着,诸如“Hello here!”之类的字符串文字被实现为该类的实例。
如何创建一个字符串变量?
这是在Kotlin中定义 String 变量的方法。例如,
val myString = "Hey there!"
在这里,myString是String类型的变量。
您可以声明 String 类型的变量,并在一条语句中指定其类型,然后在程序中稍后在另一条语句中初始化该变量。
val myString: String
... .. ...
myString = "Howdy"
如何访问字符串的字符?
要访问字符串的元素(字符),请使用索引访问运算符。例如,
val myString = "Hey there!"
val item = myString[2]
在这里,item 变量包含 myString 字符串的第三个字符y。 这是因为Kotlin中的索引从 0 开始而不是 1。
val myString = "Hey there!"
var item: Char
item = myString[0] // item = 'H'
item = myString[9] // item = '!'
item = myString[10] // 错误! 字符串索引超出范围
item = myString[-1] // 错误! 字符串索引超出范围
示例:遍历字符串
如果您需要遍历字符串的元素,则可以使用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声明了字符串变量,则可以重新分配该变量。
示例:重新分配字符串变量。
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("不使用trimMargin函数的输出:")
val myString = """
|Kotlin is interesting.
|Kotlin is sponsored and developed by JetBrains.
"""
println(myString)
println("使用trimMargin函数输出:\n")
println(myString.trimMargin())
}
运行该程序时,输出为:
不使用trimMargin函数的输出:
|Kotlin is interesting.
|Kotlin is sponsored and developed by JetBrains.
使用trimMargin函数输出:
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 字符串模板
Kotlin有一个很棒的功能,称为字符串模板,它允许字符串包含模板表达式。
字符串模板表达式以美元符号 $ 开头。以下是一些示例:
示例:Kotlin字符串模板
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("更大的数字是: ${myString.trimMargin()}")
}
运行该程序时,输出为:
更大的数字是: 6
几个字符串属性和函数
由于Kotlin中的字面量是作为String类的实例实现的,因此您可以使用该类的几个方法和属性。
length 属性 - 返回字符串的字符序列的长度。
compareTo 函数 -将此字符串(对象)与指定的对象进行比较。 如果对象等于指定的对象,则返回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("s1字符串的长度为 ${s1.length}.")
result = if (s1.compareTo(s2) == 0) "相等" else "不相等"
println("字符串s1和s2是 $result.")
// s1.get(2) 等同于 s1[2]
println("第三个字符是 ${s1.get(2)}.")
result = s1.plus(" How are you?") // result = s1 + " How are you?"
println("result = $result")
println("子字符串是 \"${s1.subSequence(4, 7)}\"")
}
运行程序时,输出为:
s1字符串的长度为 10.
字符串s1和s2是相等.
第三个字符是 y.
result = Hey there! How are you?
子字符串是 "the"