《Kotlin进化之路》之【第二章:揭开Kotlin的基础面纱】(四)

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 类。

获取更多文章请关注我的公众号(微信扫描关注):


猜你喜欢

转载自blog.csdn.net/ming_147/article/details/80194445