Kotlin - 字符串
Kotlin 的 String 数据类型用于存储字符序列。String 值必须用双引号 (" ") 或三重引号 (""" """) 包围。
Kotlin 中有两种字符串类型——一种称为 Escaped String(转义字符串),另一种称为 Raw String(原始字符串)。
Escaped string(转义字符串)使用双引号 (" ") 声明,可以包含转义字符,如 '\n'、'\t'、'\b' 等。
Raw string(原始字符串)使用三重引号 (""" """) 声明,可以包含多行文本,且无需任何转义字符。
示例
fun main(args: Array<String>) {
val escapedString : String = "I am escaped String!\n"
var rawString :String = """This is going to be a
multi-line string and will
not have any escape sequence""";
print(escapedString)
println(rawString)
}
运行上述 Kotlin 程序,将生成以下输出:
I am escaped String! This is going to be a multi-line string and will not have any escape sequence
为 String 指定数据类型是可选的,Kotlin 可以根据提供的双引号或三重引号识别变量为 String 类型。
如果要创建未赋值的 String 变量,则必须在声明时指定类型,否则会引发错误:
fun main(args: Array<String>) {
val name : String
name = "Zara Ali"
println(name)
}
运行上述 Kotlin 程序,将生成以下输出:
Zara Ali
Kotlin 字符串模板
Kotlin 字符串模板是会被求值并将其结果插入到字符串中的代码片段。模板表达式以美元符号 ($) 开头,可以是一个名称或表达式。
fun main(args: Array<String>) {
val name : String = "Zara Ali"
println("Name - $name") // 使用变量名的模板
println("Name length - ${name.length}") // 使用表达式的模板。
}
运行上述 Kotlin 程序,将生成以下输出:
Name - Zara Ali Name length - 8
Kotlin 字符串对象
Kotlin String 是一个对象,包含多个属性和函数,可以通过在特定字符串变量后添加点号 (.) 来对字符串执行某些操作。
本章将介绍一些重要的属性和函数,其余内容可在 Kotlin 最新版本的官方文档中找到。
Kotlin 字符串索引
Kotlin String 可以被视为字符序列,或者说 String 是字符数组。您可以通过方括号指定元素的索引来访问其元素。
String 索引从 0 开始,因此如果要访问字符串的第 4 个元素,应指定索引 3。
示例
fun main(args: Array<String>) {
val name : String = "Zara Ali"
println(name[3])
println(name[5])
}
运行上述 Kotlin 程序,将生成以下输出:
a A
Kotlin 字符串长度
可以使用 Kotlin 字符串的 length 属性来获取其长度。
Kotlin 函数 count() 也可以返回给定字符串的长度。
示例
fun main(args: Array<String>) {
val name : String = "Zara Ali"
println("The length of name :" + name.length)
println("The length of name :" + name.count())
}
运行上述 Kotlin 程序,将生成以下输出:
The length of name :8 The length of name :8
Kotlin 字符串最后一个索引
我们可以使用 Kotlin 字符串的 lastIndex 属性来找出字符序列中最后一个字符的索引。如果字符串为空,则返回 -1。
示例
fun main(args: Array<String>) {
val name : String = "Zara Ali"
println("The index of last character in name :" + name.lastIndex)
}
运行上述 Kotlin 程序,将生成以下输出:
The index of last character in name :7
字符串大小写转换
Kotlin 提供了 toUpperCase() 和 toLowerCase() 函数,分别用于将字符串转换为大写和小写。
示例
fun main(args: Array<String>) {
val name : String = "Zara Ali"
println("Upper case of name :" + name.toUpperCase())
println("Lower case of name :" + name.toLowerCase())
}
运行上述 Kotlin 程序,将生成以下输出:
Upper case of name :ZARA ALI Lower case of name :zara ali
Kotlin 字符串连接
我们可以使用 + 操作符连接两个字符串,或者使用 plus() 函数连接两个字符串。
示例
fun main(args: Array<String>) {
var firstName : String = "Zara "
var lastName : String = "Ali"
println("Full Name :" + firstName + lastName)
println("Full Name :" + firstName.plus(lastName) )
}
运行上述 Kotlin 程序,将生成以下输出:
Full Name :Zara Ali Full Name :Zara Ali
从字符串中去除字符
我们可以使用 drop() 或 dropLast() 函数从字符串中移除前几个或后几个字符。
示例
fun main(args: Array<String>) {
var name : String = "Zara Ali"
println("Remove first two characters from name : " + name.drop(2))
println("Remove last two characters from name : " + name.dropLast(2))
}
运行上述 Kotlin 程序,将生成以下输出:
Remove first two characters from name : ra Ali Remove last two characters from name : Zara A
字符串中的引号
要在字符串中使用引号,请使用单引号 ('):
示例
fun main(args: Array<String>) {
var str1 : String = "That's it"
var str2 : String = "It's OK"
println("str1 : " + str1)
println("str2 : " + str2)
}
运行上述 Kotlin 程序,将生成以下输出:
str1 : That's it str2 : It's OK
在字符串中查找字符串
Kotlin 提供了 indexOf() 函数来在字符串中查找文本。该函数返回字符串中指定文本第一次出现的位置索引。
示例
fun main(args: Array<String>) {
var str : String = "Meditation and Yoga are synonymous with India"
println("Index of Yoga in the string - " + str.indexOf("Yoga"))
}
运行上述 Kotlin 程序,将生成以下输出:
Index of Yoga in the string - 15
比较两个字符串
Kotlin 提供了 compareTo() 函数来比较两个字符串。如果两个字符串相等,该函数返回 0,否则返回 1。
示例
fun main(args: Array<String>) {
var str1 : String = "Apple"
var str2 : String = "Apple"
println(str1.compareTo(str2))
}
运行上述 Kotlin 程序,将生成以下输出:
0
Kotlin getOrNull() 函数
Kotlin getOrNull() 函数返回给定索引处的字符,如果索引超出此字符序列的边界,则返回 null。
示例
fun main(args: Array<String>) {
var name : String = "Zara"
println(name.getOrNull(0))
println(name.getOrNull(2))
println(name.getOrNull(100))
}
运行上述 Kotlin 程序,将生成以下输出:
Z r null
Kotlin toString() 函数
Kotlin toString() 函数返回对象的字符串表示形式。
示例
fun main(args: Array<String>) {
var name : String = "Zara Ali"
println(name.toString())
}
运行上述 Kotlin 程序,将生成以下输出:
Zara Ali
Kotlin String Class
string 是一种在编程语言中用于表示文本而非数字的数据类型。string 可以是一系列字符的序列,可能包括字母、数字、符号甚至空格。它必须用双引号括起来才能被识别为 string。
In Kotlin 中,string class 是一种基本数据类型,用于表示 charSequence。它是不可变的,这意味着一旦创建 string,就不能对其进行更改或操作。在 Kotlin 中,strings 是 string class 的实例,该类提供了各种用于 string 操作的功能。
Properties
以下是在 Kotlin string class 中定义的 Properties −
| Sr.No. | Properties & Description |
|---|---|
| 1 |
length
它返回此字符序列的长度。 |
| 2 |
indices
它返回此字符序列的有效字符索引范围。 |
函数
以下是在 Kotlin String 类中定义的函数 −
| 序号 | 函数 & 描述 |
|---|---|
| 1 |
get()
返回该字符串在指定索引处的字符。 |
| 2 |
isEmpty()
如果字符串为空则返回 true。 |
| 3 |
isNotEmpty()
如果字符串不为空则返回 true。 |
| 4 |
isBlank()
如果该字符序列为空或仅由空白字符组成(根据 Char.isWhitespace 判断),则返回 true。 |
| 5 |
first()
返回字符串的第一个字符。 |
| 6 |
last()
返回字符串的最后一个字符。 |
| 7 |
getOrNull()
返回指定索引处的字符。如果索引越界则返回 null。 |
| 8 |
equals()
比较两个字符串对象的相等性。 |
| 9 |
compareTo()
按字典序比较两个字符串。 |
| 10 |
startsWith()
判断字符序列是否以指定的前缀或字符开头。 |
| 11 |
endsWith()
判断字符串或字符序列是否以指定的后缀或字符结尾。 |
| 12 |
contains()
如果该字符序列包含指定的字符,则返回 true。 |
| 13 |
indexOf()
返回该字符串中指定字符首次出现的位置索引,从指定的 startIndex 开始搜索。 |
| 14 |
lastIndexOf()
返回该字符序列中指定字符最后一次出现的位置索引,从指定的 startIndex 开始搜索。 |
| 15 |
indexOfFirst()
返回与给定 predicate 匹配的第一个字符的索引。 |
| 16 |
indexOfLast()
返回与给定 predicate 匹配的最后一个字符的索引。 |
| 17 |
substring()
返回该字符序列在指定索引范围内的子字符串。 |
| 18 |
slice()
返回包含原始字符序列在指定索引处字符的字符序列。 |
| 19 |
uppercase()
返回该字符串转换为大写字母的副本。 |
| 20 |
lowercase()
返回该字符串转换为小写字母的副本。 |
| 21 |
trim()
返回已移除首尾空白的字符串。 |
| 22 |
trimStart()
返回已移除首部空白的该字符序列子序列。 |
| 23 |
trimEnd()
返回已移除尾部空白的该字符序列子序列。 |
| 24 |
replace()
返回一个新字符串,其中所有 oldChar 被替换为 newChar。 |
| 25 |
replaceFirst()
返回一个新字符串,其中首次出现的 oldChar 被替换为 newChar。 |
| 26 |
replaceRange()
使用替换字符串替换给定范围内的字符串部分。 |
| 27 |
map()
返回一个列表,其中包含将给定转换函数应用于原始字符序列中每个字符的结果。 |
| 28 |
filter()
返回一个字符串,其中仅包含原始字符串中与给定 predicate 匹配的字符。 |
| 29 |
reversed()
反转字符串的字符,并返回包含该字符串字符按相反顺序排列的新字符串。 |
| 30 |
repeat()
通过将原始字符串重复指定次数来返回一个新字符串。 |
| 31 |
split()
根据指定的分隔符或分隔符集将字符串分割成子字符串。 |
| 32 |
joinToString()
通过组合集合的元素返回字符串表示。 |
| 33 |
toCharArray()
返回包含该字符串字符的 CharArray。 |
| 34 |
toByteArray()
使用指定的字符集编码该字符串的内容,返回 byteArray。 |
| 35 |
toIntOrNull()
将字符串解析为 Int 数字,如果字符串不是有效数字表示则返回 null。 |
| 36 |
toDoubleOrNull()
将字符串解析为 double,如果字符串不是有效数字表示则返回 null。 |
| 37 |
toBoolean()
如果该字符串非空且内容等于单词 "true",则返回 true。 |
| 38 |
toString()
在 Kotlin 中,当我们在 class 中重写 "toString()" 方法时使用。 |
| 39 |
matches()
如果整个字符序列包含指定的正则表达式,则返回 true。 |
| 40 |
find()
返回与给定 predicate 匹配的第一个字符。 |
| 41 |
findAll()
用于在字符序列或字符串中查找正则表达式的所有匹配项。 |
| 42 |
forEach()
对每个字符执行给定的操作。 |
测验时间 (面试与考试准备)
Q 1 - 以下哪项关于 Control Flow Statement 的描述是正确的?
A - Control flow 控制程序的执行
B - Loops 和 Decision Statements 是 control flow 的组成部分
C - Control flow 是现代编程语言的重要组成部分
D - 以上全部
答案:D
解释
所有提到的陈述关于 control flow 都是正确的。
Q 2 - 以下哪项是 Kotlin 中的 control flow statement?
A - String
B - Fun
C - When
D - 以上都不是
答案:C
解释
这里关键字 when 是 Kotlin Control Flow statements 的一部分
Q 3 - 如果没有 control flow statements,几乎不可能编写计算机程序?
A - 正确
B - 错误
答案:A
解释
是的,这是正确的,control flow statements 是任何编程语言编写程序的重要组成部分。