Kotlin字符串
String
類表示char
類型的數組。 字符串是不可變的,這意味着長度和元素在創建後不能更改。
val ch = charArrayOf('h', 'e', 'l', 'l', 'o')
val st = String(ch)
與Java不同,Kotlin不需要使用new
關鍵字來實例化String
類的對象。 String
可以簡單地在雙引號(""
)中聲明,稱爲轉義字符串或三引號(""" """
),稱爲原始字符串。
val str1 = "Hello, Yiibai"
val str2 = """Welcome To Yiibai"""
字符串屬性
屬性
描述
length: Int
它返回字符串序列的長度。
indices: IntRange
它返回當前char
序列中有效字符索引的範圍。
lastIndex: Int
它返回char
序列中最後一個字符的索引。
字符串函數
函數
描述
compareTo(other: String): Int
它將當前對象與指定對象進行比較以獲得順序。 如果current
等於指定的其他對象,則返回0
。
get(index: Int): Char
它返回當前字符序列中給定索引處的字符。
plus(other: Any?): String
它返回連接字符串,其中包含給定其他字符串的字符串表示形式。
subSequence(startIndex: Int,endIndex: Int): CharSequence
它從當前字符序列返回從startIndex
開始到endIndex
新的字符序列。
CharSequence.contains(other: CharSequence, ignoreCase: Boolean = false):Boolean
如果字符序列包含指定的字符序列,則返回true
。
CharSequence.count(): Int
它返回char
序列的長度。
String.drop(n: Int): String
刪除前n
個字符後返回一個字符串。
String.dropLast(n: Int): String
刪除最後一個n
字符後返回一個字符串。
String.dropWhile(predicate: (Char) -> Boolean): String
它返回一個包含所有字符的字符序列,但滿足給定謂詞的第一個字符除外。
CharSequence.elementAt(index: Int): Char
它將返回給定索引處的字符,或如果索引在字符序列中不存在,則拋出IndexOutOfBoundsException
。
CharSequence.indexOf(char: Char, startIndex: Int = 0, ignoreCase: Boolean = false): Int
它返回從給定的索引值開始給定字符第一次出現的索引。
CharSequence.indexOfFirst(predicate: (Char) -> Boolean): Int
它返回與給定謂詞匹配的第一個字符的索引,如果字符序列不包含任何此類字符,則返回-1
。
CharSequence.indexOfLast(predicate: (Char) -> Boolean): Int
它返回與給定謂詞匹配的最後一個字符的索引,如果字符序列不包含任何此類字符,則返回-1
。
CharSequence.getOrElse(index: Int, defaultValue: (Int) ->Char): Char
如果索引超出當前字符序列的範圍,它將返回指定索引處的字符或調用defaultValue
函數的結果。
CharSequence.getOrNull(index: Int): Char?
它返回給定索引處的字符,如果索引超出字符序列的範圍,則返回null
。
字符串元素和模板
1. 字符串元素
字符串中存在的字符稱爲字符串元素。 通過索引操作string[index]
訪問字符串的元素。 String的索引值從0
開始,以字符串string [string.length-1]
結束。 索引0
表示第一個元素,索引1
表示第二個元素,依此類推。
val str ="Hello, yiibai"
println(str[0]) //prints H
訪問字符串元素的示例
fun main(args: Array<String>) {
val str = "Hello, yiibai!"
println(str[0])
println(str[1])
println(str[str.length-1])
}
執行上面示例代碼,得到以結果 -
H
e
!
2. 字符串模板
字符串模板表達式是一段代碼,它計算並將結果返回到字符串中。 兩種字符串類型(轉義和原始字符串)都包含模板表達式。 字符串模板以美元符號$
開頭,其中包含變量名稱或花括號中的任意表達式。
字符串模板作爲變量名稱:
val i =10
print("i = $i") //i=10
fun main(args: Array<String>) {
val i =10
print("i = $i")//i=10
}
執行上面示例代碼,得到以下結果 -
i=10
字符串模板作爲花括號中的任意表達式:
字符串模板也用於花括號中的表達式來計算字符串表達式。 這是通過使用美元符號$
來完成的。
fun main(args: Array<String>) {
val str = "abcd"
println("$str 是一個字符串,它的長度是:${str.length}")
}
執行上面示例代碼,得到以下結果 -
abcd 是一個字符串,它的長度是:4
原始字符串中的字符串模板
fun main(args: Array<String>) {
val a = 10
val b = 5
val myString = """value $a
|is greater than value $b
""".trimMargin()
println("${myString.trimMargin()}")
}
執行上面示例代碼,得到以下結果 -
value 10
is greater than value 5
Kotlin字符串文字
Kotlin有兩種類型的字符串文字:
- 轉義字符串
- 原始字符串
1. 轉義字符串
轉義字符串在雙引號(""
)內聲明,並且可能包含轉義字符,如\n
,\t
,\b
,\r
,\'
等。
val text1 ="Hello, Yiibai"
// 或者
val text2 ="Hello, Yiibai\n"
// 或者
val text3 ="Hello, \nYiibai"
2. 原始字符串
行字符串在三引號(""""""
)內聲明。它提供了在新行中聲明字符串幷包含多行的工具。 行字符串不能包含任何轉義字符。
val text1 ="""
Welcome
To
Yiibai Yiibai
"""
使用帶有新行的原始字符串時,它會生成一個|
作爲保證前綴。 例如:
fun main(args: Array<String>) {
val text = """Kotlin is official language
|announce by Google for
|android application development
"""
println(text)
}
執行上面示例代碼,得到以下結果 -
Kotlin is official language
|announce by Google for
|android application development
字符串trimMargin()函數
使用trimMargin()
函數刪除前導空格。 默認情況下,trimMargin()
函數使用|
作爲保證前綴。
fun main(args: Array<String>) {
val text = """Kotlin is official language
|announce by Google for
|android application development
""".trimMargin()
println(text)
}
執行上面示例代碼,得到以下結果 -
Kotlin is official language
announce by Google for
android application development
但是,可以通過在trimMargin()
函數中傳遞一個新字符串來更改它。
fun main(args: Array<String>) {
val text = """Kotlin is official language
#announce by Google for
#android application development
""".trimMargin("#")
println(text)
}
執行上面示例代碼,得到以下結果 -
Kotlin is official language
announce by Google for
android application development
Kotlin字符串相等
在Kotlin中,字符串相等比較是在結構相等(==
)和引用相等(===
)的基礎上完成的。
在結構相等中,兩個對象在內存中具有單獨的實例但包含相同的值。引用相等指定兩個不同的引用將指向同一實例內存。
結構相等(==)
要檢查包含相同值的兩個對象,可使用==
運算符或!=
運算符進行否定。 它相當於java中的equals()
。
fun main(args: Array<String>) {
val str1 = "Hello, World!"
val str2 = "Hello, World!"
println(str1==str2) //true
println(str1!=str2) //false
}
執行上面示例代碼,得到以下結果 -
true
false
引用相等(===)
要檢查兩個不同的引用指向同一個實例,可使用===
運算符。 !==
運算符用於否定。 a === b
當且僅當a
和b
都指向同一個對象時才指定true
。
讓我們來看一個引用相等的例子,它檢查不同的引用是否包含相同的實例。 要創建字符串,使用輔助方法buildString
而不是使用引號。
fun main(args: Array<String>) {
val str1 = buildString { "string value" }
val str2 = buildString { "string value" }
println(str1===str2)
println(str1!==str2)
}
執行上面示例代碼,得到以下結果 -
false
true