java 查找 替换_java 查找、替换

在工作中经常用到的查找替换方式是String的replace、replaceAll。不过配合使用Pattern、Matcher、StringBuffer可以实现更灵活的替换。代码如下,重点看一下“动态替换”。

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";

// 替换第一个,第一个参数支持正则表达式

assertEquals("baaaa", content.replaceFirst("a", "b"));

assertEquals("baaaa", content.replaceFirst("[a-z]", "b")); // 正则表达式

// 按字符替换: 替换所有查找到的字符。显然第一个参数不支持正则表达式

assertEquals("bbbbb", content.replace('a', 'b'));

// 按字符串替换:替换所有查找到的字符串,第一个参数不支持正则表达式。

assertEquals("bbbbb", content.replace("a", "b"));

// 替换所有:和replace(String, String)方法不同的是,replaceAll第一个参数还支持正则表达式

assertEquals("bbbbb", content.replaceAll("a", "b"));

assertEquals("bbbbb", content.replaceAll("\\w", "b")); // 正则表达式

// 重点注意一下:动态替换。

// 需求是:将所有查找到的a字母依次替换为1,2,3,依次类推,最后的结果应该是"xxxxx1xx2345xx6yyy"

content = "xxxxxaxxaaaaxxayyy";

String expected = "xxxxx1xx2345xx6yyy"; // 期望的结果

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"将会丢失。

// 验证结果

assertEquals(expected, sb.toString());

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值