博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
String的replaceAll方法中的正则表达式用法
阅读量:6977 次
发布时间:2019-06-27

本文共 944 字,大约阅读时间需要 3 分钟。

项目里面 需要对已手机号码进行 如下的显示

比如15088688388 要显示为150****8388的效果

实现这个简单的效果 方法有很多

我想试试用正则表达式去实现

查了点资料最终试出来以下方法可行

System.out.println("15088688388".replaceAll("( \\d{3})(\\d{4})","$1 ****"));

输出结果:150****8388

首先对replaceAll方法的第一个参数进行解释

第一个参数指定了需要替换的地方

( \\d{3 })表示"15088688388" 这个字串的前3位,即"150",视为第1组,跟第二个参数的$1相对应,( \\d{4 })则表示跟在前三位之后的4位,即"8868",视为第2组。

当然( \\d{3 }),也可以写成(150) 这种子串,,( \\d{4 })可以写成(8868),所以最终也可以写成这样System.out.println("15088688388".replaceAll("(150 )(8868)","$1****"));

replaceAll方法的第二个参数表示对需要替换的地方怎么个替换法

在第二个参数的"$1****"中,$1表示第一个参数中的第1组,即( \\d{3 }),也即"150"。"****"是追加在"150"后面,"$1****"表示"150****"。同样,如果第二个参数里面出现$2,就表示第一个参数的第二组,就是( \\d{4 }),即"8868"。

需要注意的是,如果第一个参数定义了几个组,第二个参数中没出现相对应的分组$,那就是去掉的意思。 上面那个例子中,$2没出现 ,相当于replace.("8868", "")的作用。

还有$0表示整个字符串的意思,即第一个参数的所有分组组成的字串,上述例子的( \\d{3 })( \\d{4 }),即"1508868"。

再举例一个

String str = "012345678231206546123";

System.out.println(str.replaceAll("(123)(45678)", "$1.jsp"));

打印出的结果是:

0123.jsp231206546123

转载地址:http://huupl.baihongyu.com/

你可能感兴趣的文章
netty里集成spring注入mysq连接池(一)
查看>>
Ubuntu 15.10安装ns2.35+nam
查看>>
新手安装ruby on rails(ror)的成功必备手册
查看>>
bc计算命令的知识及企业计算案例
查看>>
我的友情链接
查看>>
Linux-dd命令详解
查看>>
参观Speedy Cloud 有感
查看>>
使用Powershell管理Linux 下的 SQL Server
查看>>
liunx 下su 和sudo 的区别
查看>>
我的友情链接
查看>>
linux文本编辑nano
查看>>
ATEN—第十章OSPF的高级配置(4)
查看>>
三步10分钟搞定数据库版本的降迁 (将后台数据库SQL2008R2降为SQL2005版本)
查看>>
java sqlite使用小记
查看>>
磁盘及文件系统管理详解
查看>>
jQuery学习(一)
查看>>
Android模仿iPhone View旋转刷新数据动画详解
查看>>
我的友情链接
查看>>
做好职业规划:做自己的船长
查看>>
Mac读写NTFS格式磁盘
查看>>