String的replaceAll方法中的正则表达式用法
2015-07-29 16:16
197 查看
项目里面 需要对已手机号码进行 如下的显示
比如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
比如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
相关文章推荐
- 分组topN
- HP gives OpenVMS new life - A new road map for OpenVMS emerges from an HP agreement
- 盘点8种CSS实现垂直居中水平居中的绝对定位居中技术
- Rolling mean with customized window with Pandas
- 国外程序员整理的 C++ 资源大全
- 从文件路径中获取文件名的方法
- hdu1495 非常可乐(简单BFS)
- 单调递增最长子序列 nyoj 17
- udelay、mdelay、ndelay、msleep使用比较说明
- jquery append 动态添加的元素事件on 不起作用问题的解决
- python , angular js 学习记录【2】
- SQLServer:《SQL必知必会》一书的读书笔记(七)
- Unique Path II
- JDK和JRE的区别
- VRRP(VirtualRouterRedundancyProtocol,虚拟路由冗余协议
- vbox快照使用
- python的正则表达式 re
- 【Android基础】AsyncTask示例——加载网络图片
- 表单设计器系列之一些细节操作
- Elasticsearch中JAVA API的使用