栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 需求,例如 ^ | 是红色,因为他们此时是逻辑运算符号,. 是黑色,都不是正常分割的字符。

加完 \ 转义后,大家都正常了,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 常见转义字符

4.其他特殊情况

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/686620.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号