Kotlin字符串

Kotlin字符串

String类表示char类型的数组。 字符串是不可变的,这意味着长度和元素在创建后不能更改。

val ch = charArrayOf('h', 'e', 'l', 'l', 'o')  
val st = String(ch)

与Java不同,Kotlin不需要使用new关键字来实例化String类的对象。 String可以简单地在双引号("")中声明,称为转义字符串或三引号(""" """),称为原始字符串。

val str1 = "Hello, zyiz"  
val str2 = """Welcome To zyiz"""

字符串属性

属性 描述
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, zyiz"  
println(str[0]) //prints H

访问字符串元素的示例

fun main(args: Array<String>) {

    val str = "Hello, zyiz!"
    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, zyiz"  
// 或者
val text2 ="Hello, zyiz\n"  
// 或者
val text3 ="Hello, \nzyiz"

2. 原始字符串

行字符串在三引号("""""")内声明。它提供了在新行中声明字符串并包含多行的工具。 行字符串不能包含任何转义字符。

val text1 ="""  
             Welcome   
                 To  
zyiz zyiz  
    """

使用带有新行的原始字符串时,它会生成一个|作为保证前缀。 例如:

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当且仅当ab都指向同一个对象时才指定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

目录

数组

字符串

注解

反射