Scala/Java正则匹配中去掉unicode的空格符

本文详细介绍了在Scala中如何使用正则表达式去除包括Unicode在内的各种空白字符,通过对比不同正则表达式的应用效果,提供了一种有效的方法来清洗数据中的空白字符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Scala正则匹配中去掉unicode的空格符

在Scala做数据清洗的时候,用str.replaceAll("\\s+","")的时候有些看不见的字符并不能够被清除掉,比如说

// scala代码:
160.toChar  //普通的英文半角空格
12288.toChar  //中文空格unicode
8194.toChar  //半个中文宽度空格
8195.toChar   //一个中文宽度的空格
8196.toChar  //四分之一个中文宽度
...    //等等还有其它的,我没有收集到

下面如果有一句话我要用\\s+去掉的话里面的一些空白字符的话:

  def main(args: Array[String]): Unit = {
    val str:String = s"去掉 这句话${160.toChar.toString}中${12288.toChar.toString}的空白${8194.toChar.toString}字符"
    println(str)
    println(str.replaceAll("\\s+","|"))
  }

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200121110947546.png)
结果如下:
在这里插入图片描述
从上面的例子中可以看出来,在这个字符串里面只有第一个空格被替换掉了。
我的需求是将所有的空白字符都去掉,但是\\s+没有帮我去掉unicode的空白字符。


那么如何去掉uncode的空格呢?

unicode正则表达式文档
参照上面的这篇文章,我找到了一个方式可以去掉这些unicode的空白字符,代码如下:

  def main(args: Array[String]): Unit = {
    val str:String = s"去掉 这句话${160.toChar.toString}中${12288.toChar.toString}的空白${8194.toChar.toString}字符"
    println(str)
    println(str.replaceAll("[\\p{Space}\\p{Zs}]+","|"))
  }

在这里插入图片描述

结果如下:
在这里插入图片描述

在上面利用\\p{Zs}就已经能够达成目标的效果了,利用\\p{Space}的理由是因为,\\s+还有一个作用就是能够将\n这个回车换行符去掉,\\p{Zs}并不能去掉\n\\p{Space}可以去掉,当然这里的\\p{Space}也可以换成\\s

结束语

以上就是利用正则表达式去除一些unicode中的空白字符串的操作,如果你有更好的想法,请在下面留言,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值