Kotlin - 字符串

Kotlin - 字符串 首页 / Kotlin入门教程 / Kotlin - 字符串

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

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

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

val str1 = "Hello, learnfk"
val str2 = """Welcome To Learnfk"""

字符串属性

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

字符串函数

FunctionsDescription
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返回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。

字符串元素

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

无涯教程网

val str ="Hello, learnfk"
println(str[0]) //prints H

访问字符串元素的示例

fun main(args: Array<String>) {
  val str = "Hello, learnfk!"
  println(str[0])
  println(str[1])
  println(str[str.length-1])
}

输出:

H
e
!

字符串模板

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

无涯教程网

字符串模板作为变量名:

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有两种类型的字符串文字:

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

转义字符串

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

val text1 ="Hello, Learnfk"
//or
val text2 ="Hello, Learnfk\n"
//or
val text3 ="Hello, \nLearnfk"

原始字符串

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

val text1 ="""
             Welcome 
                 To
Learnfk
    """

在新行中使用原始字符串时,它会生成|作为前缀。例如:

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中,字符串相等性比较是基于结构相等性(==)和引用相等性(===)进行的。

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

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

结构平等(==)

要检查包含相同值的两个对象,无涯教程使用==运算符或!=运算符否定。它相当于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

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

ZooKeeper实战与源码剖析 -〔么敬国〕

研发效率破局之道 -〔葛俊〕

Kafka核心源码解读 -〔胡夕〕

微信小程序全栈开发实战 -〔李艺〕

爱上跑步 -〔钱亮〕

人人都用得上的写作课 -〔涵柏〕

超级访谈:对话张雪峰 -〔张雪峰〕

遗留系统现代化实战 -〔姚琪琳〕

现代React Web开发实战 -〔宋一玮〕

好记忆不如烂笔头。留下您的足迹吧 :)