java 查找 替换_java 查找、替换
在工作中經(jīng)常用到的查找替換方式是String的replace、replaceAll。不過配合使用Pattern、Matcher、StringBuffer可以實現(xiàn)更靈活的替換。代碼如下,重點看一下“動態(tài)替換”。
import?static?org.junit.Assert.*;
import?java.util.regex.Matcher;
import?java.util.regex.Pattern;
import?org.junit.Test;
/**
*?java查找替換
*
*?@author?wei.ss
*
*/
public?class?JavaSearchReplace?{
@Test
public?void?test()?{
//?String的替換方法
String?content?=?"aaaaa";
//?替換第一個,第一個參數(shù)支持正則表達(dá)式
assertEquals("baaaa",?content.replaceFirst("a",?"b"));
assertEquals("baaaa",?content.replaceFirst("[a-z]",?"b"));?//?正則表達(dá)式
//?按字符替換:?替換所有查找到的字符。顯然第一個參數(shù)不支持正則表達(dá)式
assertEquals("bbbbb",?content.replace('a',?'b'));
//?按字符串替換:替換所有查找到的字符串,第一個參數(shù)不支持正則表達(dá)式。
assertEquals("bbbbb",?content.replace("a",?"b"));
//?替換所有:和replace(String,?String)方法不同的是,replaceAll第一個參數(shù)還支持正則表達(dá)式
assertEquals("bbbbb",?content.replaceAll("a",?"b"));
assertEquals("bbbbb",?content.replaceAll("\\w",?"b"));?//?正則表達(dá)式
//?重點注意一下:動態(tài)替換。
//?需求是:將所有查找到的a字母依次替換為1,2,3,依次類推,最后的結(jié)果應(yīng)該是"xxxxx1xx2345xx6yyy"
content?=?"xxxxxaxxaaaaxxayyy";
String?expected?=?"xxxxx1xx2345xx6yyy";?//?期望的結(jié)果
StringBuffer?sb?=?new?StringBuffer();
Pattern?p?=?Pattern.compile("a");
Matcher?m?=?p.matcher(content);
int?i?=?1;
while?(m.find())?{
m.appendReplacement(sb,?i++?+?"");
}
m.appendTail(sb);?//?把字符串的尾部也附加上,不然"yyy"將會丟失。
//?驗證結(jié)果
assertEquals(expected,?sb.toString());
}
}
總結(jié)
以上是生活随笔為你收集整理的java 查找 替换_java 查找、替换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python大学生信息管理系统_pyth
- 下一篇: redis hash key mysql