2.3 探索字符串中的奥秘
字符串是程序开发中最常见的,出现的频率也是最高的,Kotlin中的字符串和Java语言类似,用String来表示字符串,如下代码:
fun main(args: Array<String>) {
var str:String="hello,Kotlin"
println(str)
}
打印结果:
hello,Kotlin
如果有多行字符串,在Kotlin中如何展示呢,Kotlin对于多行字符串用三个引号”””,来连接:
代码演示:
fun main(args: Array<String>) {
var str:String="""
我是第一行
我是第二行
我是第三行
"""
println(str)
}
打印结果:
我是第一行
我是第二行
我是第三行
和Java一样,Kotlin对于String也提供了很多方法,接下来我们就对其中的方法一一列出,举例说明。
2.3.1:获取字符串的长度
Kotlin对于获取字符串的长度,提供了length属性,””.length,就可以得到字符串的长度。
代码演示:
fun main(args: Array<String>) {
var str:String="abcdefghijklmn"
println(str.length)
}
打印结果:
14
2.3.2:获取字符串中的某个字符
比如获取一个字符串中第2个字符,那么我们就可以如下获取,(字符串[index],中括号里的index是索引,想获取第几个就选择第几个,索引从0开始,也就是说0就是第一个)。
代码演示:
fun main(args: Array<String>) {
var str:String="abcdefghijklmn"
println(str[1])
}
打印结果:
b
出来使用以上可以获取之外,Kotlin还提供了get(index)方法来获取:
代码演示:
fun main(args: Array<String>) {
var str:String="abcdefghijklmn"
println(str.get(1))
}
打印结果:
b
2.3.3:判断某个字符是否在当前字符串里
在Kotlin中,用关键字in,来判断某个字符或者字符串是否在指定的字符串里。
代码演示:
fun main(args: Array<String>) {
var str:String="abcdefghijklmn"
println("a" in str)
println("A" in str)
}
打印结果(可以看到字符“a”在str字符串里,大写的A则不在):
true
false
2.3.4:分割字符串
分割字符串split(“切割点”),实际开发中出现的频率很高,给定一个字符串,以某个字符或者字符串切割成多个字符串组成的一个数组:
代码演示(以字符“f”作为切割点):
fun main(args: Array<String>) {
var str:String="abcdefghijklmn"
println(str.split("f"))
}
打印结果:
[abcde, ghijklmn]
2.3.5:截取字符串
截取字符串使用substring(startIndex: Int, endIndex: Int),传两个参数,一个是起始索引,一个是结束索引:
代码演示(截取6至12,包左不包右):
fun main(args: Array<String>) {
var str:String="abcdefghijklmn"
println(str.substring(6,12))
}
打印结果:
ghijkl
2.3.6:替换字符串
替换字符串在Kotlin中和Java的使用方式是一样的,都是使用replace(oldValue: String, newValue: String)方法来替换,两个参数,前者为需要替换的字符或者字符串,后者为要替换的字符或者字符串。
代码演示:
fun main(args: Array<String>) {
var str:String="abcdefghijklmn"
println(str.replace("d","明"))
}
打印结果:
abc明efghijklmn
2.3.7:删除字符串
想到大多数高级语言中的删除,要么是delete,要么是remove,偏偏在Kotlin语言里对于字符串的删除用的是drop,是不是顿时眼前焕然一新,Kotlin里对字符串的删除有两个,一个是从前边删除用drop(n: Int),一个是从后边删除,使用dropLast(n: Int),n为删除几个。
代码演示:
fun main(args: Array<String>) {
var str:String="abcdefghijklmn"
println(str.drop(2))
println(str.dropLast(2))
}
打印结果:
cdefghijklmn
abcdefghijkl
2.3.8:字符串模板:
使用字符串模板的符号为($),在$符号后面加上变量名或大括号中的表达式。
代码演示:
fun main(args: Array<String>) {
val text1: String = "Hello"
var text2: String = "$text1 Kotlin"
var text3: String = "$text2 ${text1.length} 哈哈!!!!"
println(text1)
println(text2)
println(text3)
}
打印结果:
Hello
Hello Kotlin
Hello Kotlin 5 哈哈!!!!
2.3.9:更多字符串方法:
2.3.9.1:去除字符串开头空格,我们可以使用str.trimStart()
代码演示:
fun main(args: Array<String>) {
var str:String=" abcdefghijklmn"
println(str.trimStart())
println(str)
}
打印结果:
abcdefghijklmn
abcdefghijklmn
2.3.9.2:去除字符串末尾空格,这个就和Java一样了,我们可以使用str.trim()
代码演示:
fun main(args: Array<String>) {
var str:String="abcdefghijklmn "
println(str.trim())
}
打印结果:
abcdefghijklmn
2.3.9.3:判断字符串开头是否包含某个字符,使用startsWith()方法
代码演示(判断字符串“a”是否在str字符串开头):
fun main(args: Array<String>) {
var str:String="abcdefghijklmn"
println(str.startsWith("a"))
}
打印结果:
true
2.3.9.4:判断字符串结尾是否包含某个字符,使用endsWith()方法
代码演示:
fun main(args: Array<String>) {
var str:String="abcdefghijklmn"
println(str.endsWith("m")) // false 不在
println(str.endsWith("mn")) // true 在
println(str.endsWith("n")) // true 在
}
打印结果:
false
true
true
2.3.9.5:大小写转换toUpperCase()和toLowerCase()
代码演示:
fun main(args: Array<String>) {
var str:String="abcdefghijklmn"
println(str.toUpperCase())
println(str.toLowerCase())
}
打印结果:
ABCDEFGHIJKLMN
abcdefghijklmn
2.3.9.6:往字符串里追加字符或者字符串使用plus()
代码演示:
fun main(args: Array<String>) {
var str:String="abcdefghijklmn"
println(str.plus("a"))
}
打印结果:
abcdefghijklmna
2.3.9.7:字符串比较
Kotlin使用的是equals(other: Any?)方法来比较两个字符串是否相等,这个是和Java中的语法类似的。
代码演示:
fun main(args: Array<String>) {
var str:String="abcdefghijklmn"
println(str.equals("a"))
println(str.equals("abcdefghijklmn"))
}
打印结果:
false
true
关于Kotlin语言的字符串使用,先介绍到这里,以上的这些方法基本也涵盖了平时开发中所常用的,对于这些方法,希望初学者可以试着多敲几遍,多熟悉熟悉,接下来的章节,我们趁热打铁,来介绍一下两个和String相近的两个类:StringBuffer 和 StringBuilder 类。
获取更多文章请关注我的公众号(微信扫描关注):