java中关于replaceAll和appendReplacement的笔记
来源:互联网 发布:java上传图片到tomcat 编辑:程序博客网 时间:2024/05/18 06:25
今天在会友哥的电政导论课上写法师的作业,很简单,就是实现一个函数:屏蔽字符串参数text 中的网页链接信息,并且替换成"OMIT"+计数器.
正则表达式没有什么问题,但是在计数器上面就悲剧了,最初是用String 中的 replaceAll函数进行匹配和替换,三行代码搞掂:
String s = text.replaceAll(regex,"OMIT"+(count++));return s;
但是结果很悲催,OMIT后面的count并没有改变,于是去读了replaceAll的源码:
public String replaceAll(String regex, String replacement) { return Pattern.compile(regex).matcher(this).replaceAll(replacement); } public String replaceAll(String replacement){reset(); boolean result = find();if (result){StringBuffer sb = new StringBuffer();do { appendReplacement(sb, replacement);result = find(); }while (result); appendTail(sb);return sb.toString();} return text.toString(); }可以看到,replaceAll是一次性接收整个需要替换的字符串,在我的代码上,此时传入第二个replaceAll的参数replacement只是第一次的count,即1.所以得出的结果,计数器并没有变化.
后来对代码进行改进,直接运用appendReplacement:
String replacement = "OMIT"; Pattern p = Pattern.compile(regex); Matcher m = p.matcher(text);StringBuffer sb = new StringBuffer(); while(m.find()){m.appendReplacement(sb, replacement+count);count++;}m.appendTail(sb);这样直接将给定的字符串进行匹配,匹配的结果以group的形式进行替换,这样count就会累加并显示在替换后的字符串上了.最后不要忘记用appendTail.
- java中关于replaceAll和appendReplacement的笔记
- Matcher中appendReplacement()方法与replaceAll()方法的联系
- java中replace和replaceAll的学习笔记
- 关于Java中Match类的appendReplacement()方法的一个坑{ character to be escaped }
- Java appendReplacement的理解
- replaceAll ()/appendReplacement()/appendTail():
- java中replace和replaceAll的区别
- java中replace和replaceAll的区别
- java中replace和replaceAll的区别
- java中replace和replaceAll的区别
- java中replace和replaceAll的区别
- java中replace和replaceAll的区别
- java中replace和replaceAll的区别
- java中replace和replaceAll的区别
- java中replace和replaceAll的区别
- JAVA中replace和replaceAll的区别
- JAVA中REPLACE和REPLACEALL的区别
- java中replace和replaceAll的区别
- 加密锁十宗罪
- xxxx.h头文件解析
- Python之——PY文件中支持中文字符
- 往事如风
- 日语的美食佳肴与饮品
- java中关于replaceAll和appendReplacement的笔记
- 正则表达式标志
- nginx访问php页面出现No input file specified.
- 开启apache的url rewrite模块
- p,&p,*p的区别
- 【算法题】二叉树的前序遍历(递归和非递归算法分析)
- jquery图片滚动效果插件SuperSlide1.2
- 如何更改struts中错误默认返回input InputConfig内methodName跟resultName的使用方法
- javaEE--ibatis--Sping+flex4 调用存储过程返回List结果集