本文概述
String类表示char类型的数组。字符串是不可变的, 这意味着长度和元素在创建后无法更改。
val ch = charArrayOf('h', 'e', 'l', 'l', 'o')
val st = String(ch)
与Java不同, Kotlin不需要新的关键字来实例化String类的对象。可以在称为转义字符串的双引号(“”)或称为原始字符串的三重引号(“”“”“”)中简单地声明字符串。
val str1 = "Hello, srcmini"
val str2 = """Welcome To srcmini"""
Kotlin String属性
属性 | 描述 |
---|---|
length: Int | 它返回字符串序列的长度。 |
索引:IntRange | 它从当前char序列返回有效字符索引的范围。 |
lastIndex:整数 | 它从char序列返回最后一个字符的索引。 |
字符串功能
功能 | 描述 |
---|---|
compareTo(other:String):整数 | 它将当前对象与指定对象进行比较。如果电流等于指定的其他对象, 则返回零。 |
get(index:Int):字符 | 它从当前字符序列返回给定索引处的字符。 |
加号(其他:任何?):字符串 | 它返回连接字符串以及给定其他字符串的字符串表示形式。 |
subSequence(startIndex:Int, endIndex:Int):CharSequence | 它从当前字符序列返回新字符序列, 从startIndex到endIndex开始。 |
CharSequence.contains(other:CharSequence, ignoreCase:Boolean = false):布尔值 | 如果字符序列包含其他指定的字符序列, 则返回true。 |
CharSequence.count():整数 | 它返回char序列的长度。 |
String.drop(n:整数):字符串 | 删除前n个字符后, 它返回一个字符串。 |
String.dropLast(n:Int):字符串 | 删除最后一个n个字符后, 它返回一个字符串。 |
String.dropWhile(谓词:(Char)-> Boolean):字符串 | 它返回一个字符序列, 其中包含除满足给定谓词的第一个字符外的所有字符。 |
CharSequence.elementAt(index:Int):字符 | 它返回给定索引处的字符, 或者如果字符序列中不存在该索引, 则抛出IndexOutOfBoundsException。 |
CharSequence.indexOf(char:Char, startIndex:Int = 0, ignoreCase:Boolean = false):Int | 从给定的索引值开始, 它返回给定字符首次出现的索引。 |
CharSequence.indexOfFirst(谓词:(Char)-> Boolean):Int | 它返回与给定谓词匹配的第一个字符的索引;如果字符序列中不包含任何此类字符, 则返回-1。 |
CharSequence.indexOfLast(谓词:(Char)-> Boolean):Int | 它返回与给定谓词匹配的最后一个字符的索引;如果字符序列中不包含任何此类字符, 则返回-1。 |
CharSequence.getOrElse(index:Int, defaultValue:(Int)-> Char):字符 | 它返回指定索引处的字符, 或者如果索引超出当前字符序列的范围, 则返回调用defaultValue函数的结果。 |
CharSequence.getOrNull(索引:Int):字符? | 它在给定的索引处返回一个字符;如果索引超出字符序列的范围, 则返回null。 |
字符串元素和模板
字符串元素
字符串中存在的字符称为字符串元素。通过索引操作string [index]访问string的元素。字符串的索引值从0开始, 以小于字符串string [string.length-1]的大小结尾。索引0代表第一个元素, 索引1代表第二个元素, 依此类推。
val str ="Hello, srcmini"
println(str[0]) //prints H
访问字符串元素的示例
fun main(args: Array<String>) {
val str = "Hello, srcmini!"
println(str[0])
println(str[1])
println(str[str.length-1])
}
输出:
H
e
!
字符串模板
字符串模板表达式是一段代码, 将对其求值并将其结果返回到字符串中。两种字符串类型(转义字符串和原始字符串)都包含模板表达式。字符串模板以美元符号$开头, 美元符号由变量名或大括号中的任意表达式组成。
字符串模板作为变量名:
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 = "abc"
println("$str is a string which length is ${str.length}")
}
abc is a string which length is 3
原始字符串中的字符串模板:
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有两种类型的字符串文字:
- 转义字符串
- 原始字符串
转义字符串
转义字符串在双引号(“”)中声明, 并且可以包含转义字符, 例如’\ n’, ‘\ t’, ‘\ b’, ‘\ r’, ‘\ $’等。
val text1 ="Hello, srcmini"
//or
val text2 ="Hello, srcmini\n"
//or
val text3 ="Hello, \nsrcmini"
原始字符串
行字符串在三引号(“”“”“”)中声明。它提供了在新行中声明String并包含多行的功能。行字符串不能包含任何转义字符。
val text1 ="""
Welcome
To
srcmini
"""
在换行中使用原始字符串时, 它会生成一个|。作为保证金前缀。例如:
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
评论前必须登录!
注册