Kotlin字符串

本文概述

  • Kotlin String属性
  • 字符串功能
  • 字符串元素和模板
  • Kotlin字符串文字
  • 字符串trimMargin()函数
  • Kotlin字符串平等
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])}

输出:
He!

字符串模板
字符串模板表达式是一段代码, 将对其求值并将其结果返回到字符串中。两种字符串类型(转义字符串和原始字符串)都包含模板表达式。字符串模板以美元符号$开头, 美元符号由变量名或大括号中的任意表达式组成。
字符串模板作为变量名:
val i =10print("i = $i") //i=10fun main(args: Array< String> ) {val i =10print("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 = 10val b = 5val myString = """value $a|is greater than value $b""".trimMargin()println("${myString.trimMargin()}")}

【Kotlin字符串】输出:
value 10is greater than value 5

Kotlin字符串文字Kotlin有两种类型的字符串文字:
  • 转义字符串
  • 原始字符串
转义字符串
转义字符串在双引号(“”)中声明, 并且可以包含转义字符, 例如’ \ n’ , ‘ \ t’ , ‘ \ b’ , ‘ \ r’ , ‘ \ $’ 等。
val text1 ="Hello, srcmini"//orval text2 ="Hello, srcmini\n"//orval text3 ="Hello, \nsrcmini"

原始字符串
行字符串在三引号(“”“”“”)中声明。它提供了在新行中声明String并包含多行的功能。行字符串不能包含任何转义字符。
val text1 ="""Welcome Tosrcmini"""

在换行中使用原始字符串时, 它会生成一个|。作为保证金前缀。例如:
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 languageannounce by Google forandroid 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 languageannounce by Google forandroid application development

Kotlin字符串平等在Kotlin中, 字符串相等性比较是基于结构相等性(==)和引用相等性(===)进行的。
在结构相等中, 两个对象在内存中具有单独的实例, 但包含相同的值。
引用相等性指定两个不同的引用指向内存中的同一实例。
结构相等(==)
要检查两个包含相同值的对象, 我们使用==运算符或!=运算符进行求反。它等效于Java中的equals()。
fun main(args: Array< String> ) {val str1 = "Hello, World!"val str2 = "Hello, World!"println(str1==str2) //trueprintln(str1!=str2) //false}

输出:
truefalse

参照相等(===)
为了检查两个不同的引用指向同一个实例, 我们使用===运算符。 !==运算符用于求反。当且仅当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)}

输出:
falsetrue

    推荐阅读