• 那是从何处传来的钟声呢?偶尔听到那钟声,平添一份喜悦与向往之情。

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

后端 Nanait 8年前 (2012-07-01) 111次浏览 已收录 0个评论 扫描二维码

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

比如 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

 

最后把课后作业做一下:

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

何处钟 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:String 的 replaceAll 方法中的正则表达式用法
喜欢 (0)
[15211539367@163.com]
分享 (0)

您必须 登录 才能发表评论!