Kotlin——初级篇(八):关于字符串(String)常用操作汇总 (3)

同上一节一样,Kotlin除了实现Java中的split()函数之外,还提供了splitToSequence()函数来分割字符串。分割成功后都会返回一个字符串集合用于我们后续操作。

4.1、 split()函数

split()函数也是提供了4个重载函数。其中,用正则表达式为条件分割占用两个。用字符分割占用一个。用字符串分割占用一个。

4.1.2、使用正则表达式分割

在Kotlin中使用正则表达式,使用的是Regex类,而Java中使用正则表达式使用的Pattern类。这里分别举例说明

例:

var str2 = "1 kotlin 2 java 3 Lua 4 JavaScript" val list3 = str2.split(Regex("[0-9]+")) for (str in list3){ print("$str \t") } println() val list4 = str2.split(Pattern.compile("[0-9]+")) for (str in list4){ print("$str \t") }

输出结果为:

kotlin java Lua JavaScript kotlin java Lua JavaScript 4.1.2、使用字符或字符串分割

在实际的项目开发中,还是这种方式用的要多一些。不过这里值得注意的是,不管是用字符分割,还是字符串分割,其都是一个可变参数。即其参数的个数不定。

例:

val str1 = "Kotlin is a very good programming language" val list1 = str1.split(' ') for (str in list1){ print("$str \t") } println() val list2 = str1.split(" ") for (str in list2){ print("$str \t") }

输出结果为:

Kotlin is a very good programming language Kotlin is a very good programming language

这里举例一个可变参数情况的例子:

val str3 = "a b c d e f g h 2+3+4+5" val list5 = str3.split(' ','+') for (str in list5){ print("$str \t") }

输出结果为:

a b c d e f g h 2 3 4 5 4.2、 splitToSequence()函数

此函数同样可以用字符串或字符去分割,其用法和上述的split()函数一样。这里就不多累述了...

五、其他

除了上面讲解到的几点外,还有很多常用的处理,比如检测字符串是否为空串,是否为null,获取字符串长度,字符串反转,统计,转换字符数组,获取指定下标的字符等等。

5.1、 获取字符串长度

在Kotlin中用两种获取字符串长度的方法。其实也是一种而已

直接用length属性获取长度

用count()函数获取,其实count()函数的做法也是返回了length长度。

实例:

val str = "kotlin very good" // 1. 直接用length属性获取 println("str.length => ${str.length}") // 2. 用count()函数获取 println("str.count() => ${str.count()}")

输出结果为:

str.length => 16 str.count() => 16

这里我们看一看count()函数的源码

/** * Returns the length of this char sequence. * 其实也就是返回了length属性... */ @kotlin.internal.InlineOnly public inline fun CharSequence.count(): Int { return length } 5.2、统计重复字符

上面讲到了count()函数,是返回了length属性获取字符串的长度。其实源码中还提供了一个叫count{}的高阶函数,用于统计字符串中重复某个字符的个数。

看一看他的源码

public inline fun CharSequence.count(predicate: (Char) -> Boolean): Int { var count = 0 for (element in this) if (predicate(element)) count++ return count }

源码解释:该函数接受一个Boolean类型的Lambda表达式。然后循环这个字符串,如果我的条件成立,则变量count自增。循环完成之后返回重复的个数count

实例:

val str = "kotlin very good" val count = str.count { it == 'o' } println("count : $count")

输出结果为:

count : 3 5.3、 验证字符串

在实际的开发中,特别是Android开发中,会经常遇到验证输入框的内容是否为空串的时候。在Kotlin中,和Java一样提供了几个处理这种情况的函数。

下列几个函数都是处理字符串为空串或为空的:

isEmpty() : 其源码是判断其length是等于0,若等于0则返回true,反之返回false。不能直接用于可空的字符串

isNotEmpty() : 其源码是判断其length是否大于0,若大于0则返回true,反之返回false。不能直接用于可空的字符串

isNullOrEmpty() : 其源码是判断该字符串是否为null或者其length是否等于0。

isBlank() : 其源码是判断其length是否等于0,或者判断其包含的空格数是否等于当前的length。不能直接用于可空的字符串

isNotBlank() : 其源码是对isBlank()函数取反。不能直接用于可空的字符串

isNotOrBlank() : 其源码判断该字符串是否为null。或者调用isBlank()函数

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpfjpx.html