Kotlin 字符串

2024 年 8 月 29 日 | 5 分钟阅读

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

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

Kotlin 字符串属性

属性描述
length: Int它返回字符串序列的长度。
indices: IntRange它返回当前字符序列的有效字符索引的范围。
lastIndex: Int它返回字符序列中最后一个字符的索引。

字符串函数

函数描述
compareTo(other: String): Int它将当前对象与指定对象进行顺序比较。 如果当前对象等于指定的其他对象,则返回零。
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它返回字符序列的长度。
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。

字符串元素和模板

字符串元素

字符串中存在的字符称为字符串的元素。 通过索引操作 string[index] 访问字符串的元素。 字符串的索引值从 0 开始,到字符串的长度减 1 string[string.length-1] 结束。 索引 0 代表第一个元素,索引 1 代表第二个元素,依此类推。

访问字符串元素的例子

输出

H
e
!

字符串模板

字符串模板表达式是一段代码,它被求值并且其结果返回到字符串中。 两种字符串类型(转义字符串和原始字符串)都包含模板表达式。 字符串模板以美元符号 $ 开头,该符号由变量名或大括号中的任意表达式组成。

字符串模板作为变量名

输出

i=10

字符串模板作为大括号中的任意表达式

字符串模板也用于大括号中的任意表达式中以评估字符串表达式。 这是通过使用美元符号 $ 完成的。

abc is a string which length is 3

原始字符串中的字符串模板

输出

value 10
is greater than value 5

Kotlin 字符串字面量

Kotlin 有两种类型的字符串字面量

  • 转义字符串
  • 原始字符串

转义字符串

转义字符串在双引号 (" ") 中声明,并且可能包含转义字符,例如 '\n'、'\t'、'\b'、'\r'、'\$' 等。

原始字符串

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

使用原始字符串换行时,它会生成一个 | 作为边距前缀。 例如

输出

Kotlin is official language
        |announce by Google for
        |android application development

String trimMargin() 函数

可以使用 trimMargin() 函数删除前导空格。 默认情况下,trimMargin() 函数使用 | 作为边距前缀。

输出

Kotlin is official language
announce by Google for
android application development

但是,可以通过在 trimMargin() 函数中传递一个新字符串来更改它。

输出

Kotlin is official language
announce by Google for
android application development

Kotlin 字符串相等性

在 Kotlin 中,字符串相等性比较是基于结构相等性 (==) 和引用相等性 (===) 的。

在结构相等性中,两个对象在内存中有单独的实例,但包含相同的值。

引用相等性指定两个不同的引用指向内存中的同一个实例。

结构相等性 (==)

要检查两个对象是否包含相同的值,我们使用 == 运算符或 != 运算符进行否定。 它等效于 Java 中的 equals()

输出

true
false

引用相等性 (===)

要检查两个不同的引用是否指向同一个实例,我们使用 === 运算符。 !== 运算符用于否定。 a === b 指定当且仅当 a 和 b 都指向同一个对象时为 true。

让我们看一个引用相等性的例子来检查不同的引用是否包含相同的实例。 为了创建字符串,我们使用一个辅助方法 buildString 而不是使用引号。

输出

false
true

下一个主题Kotlin 异常处理