Scala中的split函数使用
Scala 中的 split 函数主要有下面两种参数形式:
def split(arg0: String): Array[String] def split(arg0: String, arg1: Int): Array[String]
其实它的第一种方式,可以认为将第二种方式的 arg1 设置为 0 形成的结果
arg0 代表的是一个正则表达式,代表根据 arg0 来分割
arg1 是对分割后的字串的个数做限定。arg1 的取值大体来说有三种方式。小于 0、等于 0、大于 0
一、当 arg1 大于 0 的时候
它表示原字符串被 arg0 分割后的子字串个数,也就是说原字符串最多被分割为 arg1 个字串
scala> "a-b-c".split("-", 2) res0: Array[String] = Array(a, b-c) scala> "a-b-c".split("-", 4) res1: Array[String] = Array(a, b, c) scala> "-a-b-c--".split("-", 3) res2: Array[String] = Array("", a, b-c--) scala> "-a-b-c--".split("-", 6) res3: Array[String] = Array("", a, b, c, "", "") scala> "-a-b-c--".split("-", 5) res4: Array[String] = Array("", a, b, c, -) scala> "-a-b-c--".split("-", 8) res5: Array[String] = Array("", a, b, c, "", "")
二、当 arg1 等于 0 的时候
它表示原字符串被 arg0 分割后的子字串个数没有限制,也就是说原字符串能被分割为多少个,就被分割为多少个。
注意:如果被分割后的子字符串,后面包含空字符串,则默认去掉。前面的不受影响
scala> "a-b-c".split("-", 0) res6: Array[String] = Array(a, b, c) scala> "a-b-c---".split("-", 0) res7: Array[String] = Array(a, b, c) scala> "-a--b--c---".split("-", 0) res8: Array[String] = Array("", a, "", b, "", c) scala> "".split("-", 0) res9: Array[String] = Array("")
三、当 arg1 小于 0 的时候
它表示原字符串被 arg0 分割后的子字串个数没有限制,也就是说原字符串能被分割为多少个,就被分割为多少个。
注意:如果被分割后的子字符串,无论前面、后面是否包含空字符串,均不受影响
scala> "a-b-c".split("-", -1) res10: Array[String] = Array(a, b, c) scala> "-a--b--c-".split("-", -1) res11: Array[String] = Array("", a, "", b, "", c, "")
四、当 arg0 为 . 时,需要转义
scala> "a.b.c".split("\.", -1) res12: Array[String] = Array(a, b, c)
下面是没有转义的情况:
scala> "a.b.c".split(".", -1) res13: Array[String] = Array("", "", "", "", "", "") scala> "a.b.c".split(".", -1) <console>:1: error: invalid escape character "a.b.c".split(".", -1)
上一篇:
IDEA上Java项目控制台中文乱码