Scala - 使用转义字符 \\ 与 | 分割字符

一.引言

scala 使用 '|' 作为分割字符时,报红线并提示 scala empty branch in alternation,使用 \\ 转义字符修饰后实现 '|' 的正常 String Split。

二.使用分析

1.错误用法

val word = "112345|2"

A.错误1: 转义字符用反

println(word.split("/|").mkString(","))
1,1,2,3,4,5,|,2

翻译字符为 '\' ,使用 '/' 后不会正确划分字符串

B.错误2: 直接用特殊字符

println(word.split("|").mkString(","))
1,1,2,3,4,5,|,2

直接使用 '|' 会出现引言中的提示 scala empty branch in alternation,导致分隔符为空间隔,所以都划分了一遍

2.正确用法

对于特殊字符分割,需要使用 \\| 双转义字符:

println(word.split("\\|").mkString(","))
112345,2

Tips:

    public String[] split(String regex) {
        return split(regex, 0);
    }

这里解释一下为什么 | 会分割错误,split 函数的参数 String regex,其实这里就是一个正则表达式,| 在这里代表的作用,例如你可以同时使用两个分隔符分割字符串,因此使用 | 符号时要注意自己是否需要增加转义字符 :

    val word = "1<2>3"
    println(word.split("<|>").mkString(","))
1,2,3

三.其他需要 \\ 转义的字符

1.还有哪些字符需要转义

除了 ‘|’ 外, * ^ . + ? $ ... 也需要使用转义字符:

    val word = "1*2^3:4.5|6"
    println(word.split("^").mkString("-2022-"))
    println(word.split(".").mkString("-2022-"))
    println(word.split("|").mkString("-2022-"))

可以看到这些字符直接 split 后会有很多奇怪的结果,要么不 split,要么啥也没有,要么一个一个分割,所以遇到这些奇怪的字符一定记得加 \\ 转义 ,+ ? 会直接报错,无法 split ,$ 后面标识变量,直接 split 也要注意。

1*2^3:4.5|6

1-2022-*-2022-2-2022-^-2022-3-2022-:-2022-4-2022-.-2022-5-2022-|-2022-6

2.怎么识别转义字符

观察下面 split 语法,只要 regex 显示不和字符串一个颜色 (没用编辑器另说= =),那这个符号大概率需要转义或者不能满足你的 split 需求,例如 ^ | 是红色,因为他们此时是逻辑运算符号,. 是黑色,都不是正常分割的字符。

Scala - 使用转义字符 \\ 与 | 分割字符_第1张图片

加完 \\ 转义后,大家都正常了,NICE

    val word = "1*2^3:4.5|6"
    println(word.split("\\^").mkString("-2022-"))
    println(word.split("\\.").mkString("-2022-"))
    println(word.split("\\|").mkString("-2022-"))
1*2-2022-3:4.5|6
1*2^3:4-2022-5|6
1*2^3:4.5-2022-6

3.scala 常见转义字符

Scala - 使用转义字符 \\ 与 | 分割字符_第2张图片

4.其他特殊情况

除了 '|' 分割符号外,还有一个常用的分隔符是 ’^A' ,该符号是 Hive 的默认分割符号,但是文本格式下无法显示,如果要对 '^A' 分割的字符串分割,可以使用 string.split('\001') 

你可能感兴趣的:(Scala,常用语法,异常解决,scala,split,\001)