String的replaceAll方法中的正则表达式用法

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

比如15779216424要显示为157****6424的效果
实现这个简单的效果 方法有很多
我想试试用正则表达式去实现
查了点资料最终试出来以下方法可行

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

输出结果:157****6424

一个括号表示一组
( \d{3 })表示”15779216424” 这个字串的前3位,即”157”,视为第1组,跟第二个参数的$1相对应,
( \d{4 })则表示中间的那4位,即”7921”,视为第2组,跟**相对应。
需要注意的是,如果第一个参数定义了几个组,第二个参数中没出现相对应的分组 2没出现 ,相当于replace.(“8868”, “”)的作用。
还有$0表示整个字符串的意思,即第一个参数的所有分组组成的字串,上述例子的( \d{3 })( \d{4 }),
即”1577921”。
再举例一个

System.out.println("liuyanzhao".replaceAll("([a-z]{3})([a-z]{3})([a-z]{3})", "$1-$2-$3"));

打印出的结果是:
liu-yan-zhao

最后把课后作业做一下:

String str1 = "手机13766665959的网友说:这首歌很怀旧";
String str2 = "座机0791-8120410打电话说:我想点歌,可忘记歌名了。";
String str3 = "QQ号33887974发来信息:小萱萱,你主持的节目真好!";
System.out.println(str1.replaceAll("([^0-9]*)(\\d{7})(\\d{4})(.*)", "$1尾号$3$4"));
System.out.println(str2.replaceAll("([^0-9]*)(\\d*)-(\\d{3,4})(\\d{4})(.*)", "$1尾号$4$5"));
System.out.println(str3.replaceAll("([^0-9]*)(\\d*)(\\d{4})(.*)", "$1尾号$3$4"));

本文地址:http://liuyanzhao.com/2893.html
转载请注明

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半缘修道半缘君丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值