博客
关于我
Java Matcher类appendReplacement和appendTail方法的区别
阅读量:335 次
发布时间:2019-03-04

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

public static void main(String[] args) {		String str = "测试替换手机号15212793109哇哈哈18909801234欧米茄";		System.out.println("<<
/**	 * 隐藏并替换字符串中所有的手机号	 * @param contentStr	 * @return	 */	public static String hideAllPhoneNum(String contentStr){		Pattern pattern =Pattern.compile("((13[0-9])|(14[5,7,9])|(15([0-3]|[5-9]))|(17[0,1,3,5,6,7,8])|(18[0-9])|(19[8|9]))\\d{8}");		Matcher matcher = pattern.matcher(contentStr);		StringBuffer sb = new StringBuffer();		try {			while(matcher.find()) {				String phoneStr = matcher.group();				phoneStr = phoneStr.substring(0, 3) + "****" + phoneStr.substring(7, phoneStr.length());				matcher.appendReplacement(sb,phoneStr);			}			System.out.println("执行appendTail前:"+sb.toString());			matcher.appendTail(sb);			System.out.println("执行appendTail后:"+sb.toString());		} catch (Exception ex) {			ex.printStackTrace();		}		return sb.toString();	}

运行结果:

简要说明一下两个方法的用法:

appendReplacement方法:sb是一个StringBuffer,replaceContext待替换的字符串,这个方法会把匹配到的内容替换为replaceContext,并且把从上次替换的位置到这次替换位置之间的字符串也拿到,然后,加上这次替换后的结果一起追加到StringBuffer里(假如这次替换是第一次替换,那就是只追加替换后的字符串啦)。

appendTail方法:sb是一个StringBuffer,这个方法是把最后一次匹配到内容之后的字符串追加到StringBuffer中。

两个方法一起使用就可以达到所有替换或者替换第一个:

所有替换:

[java]  
  1. while(m.find()){  
  2.     m.appendReplacement(sb,replaceContext);  
  3. }  
  4. .appendTail(sb);  
替换第一个:

[java]  
  1. if (matcher.find()){  
  2.     matcher.appendReplacement(sb, replaceContext);  
  3. }  
  4. matcher.appendTail(sb);   
你可能感兴趣的文章
一次编辑
查看>>
简单工厂模式
查看>>
代理模式
查看>>
Js中Currying的应用
查看>>
长按键入
查看>>
Vuex和普通全局对象
查看>>
上升下降字符串
查看>>
JavaScript中的链式调用
查看>>
day-04-列表
查看>>
day-13-匿名函数-内置函数2-闭包
查看>>
Linux 磁盘管理(df fu fdisk mkfs mount)
查看>>
力扣125. 验证回文串-C语言实现-简单题
查看>>
空间向量
查看>>
第一类曲面积分
查看>>
常数项级数
查看>>
Mybatis的介绍和基本使用
查看>>
Redis简介(数据结构,哨兵、集群和SpringDataRedis)
查看>>
jar包破解Idea
查看>>
MySQL锁机制
查看>>
Java设置PPT幻灯片背景——纯色、渐变、图片背景
查看>>