在工作中经常用到的查找替换方式是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());

}

}

java 查找 替换_java 查找、替换相关推荐

  1. java 查找 替换_Java 查找替换Excel数据

    概述 本文介绍如何在Java程序中来查找并替换Excel中的数据.替换数据时,可设置新数据的样式/格式等. 使用工具 工具:Free Spire.XLS for Java (免费版) 注:可通过e-i ...

  2. java excel 搜索_Java 查找、替换并高亮Excel数据

    需求介绍 我有一个含有大量数据资料的Excel文档,现需要对其中的一个或多个单元格的数据进行修改.请问如何才能用Java代码快速查找到指定数据,然后用新文本将其替换并高亮?例如,在下图所示的Excel ...

  3. java 高效文本查找替换_Java 查找、高亮PDF 文本

    本文将介绍如何通过Java程序来查找并高亮PDF中的文本. 使用工具:Free Spire.PDF for Java(免费版) Jar文件获取及导入: 方法1:官网下载jar包. 下载Jar​www. ...

  4. java正则手机号_Java正则替换手机号代码实例

    在日常生活中,我们经常会遇到将一个手机号的4-7位字符串用正则表达式替换为为星号"*".这是出于对安全性和保护客户隐私的考虑将程序设计成这样的.下面我们就来看看具体代码. pack ...

  5. java 手机号替换_Java正则替换手机号代码实例

    在日常生活中,我们经常会遇到将一个手机号的4-7位字符串用正则表达式替换为为星号"*".这是出于对安全性和保护客户隐私的考虑将程序设计成这样的.下面我们就来看看具体代码. pack ...

  6. java 所有子类_java 查找类的所有子类

    package _02; import java.io.File; import java.net.URL; public class MainTest_FindAllSubClass { publi ...

  7. java word标签替换_JAVA实现替换WORD模板中的文字和图片

    1.本来有其他方法可以实现的,但是由于jar包一直有问题所以换了种,要是还有其他的更好的方法,希望可以讨论 2.废话不说直接上代码: 3.我自己加了个生成图片的方法,也可以不需要直接用已经存在的图片替 ...

  8. java nul 字符_Java字符串替换和NUL(NULL,ASCII 0)字符?

    用空字符替换字符中的字符甚至在Java中工作吗?我知道'\ 0'会终止一个c字符串. 这取决于你如何定义工作.是否用'\0'替换了所有出现的目标字符?绝对! String s = "food ...

  9. java 快捷键替换_java 快捷键替换

    Java 线上诊断工具 Arthas Arthas 阿里巴巴2018年9月开源的一款Java线上诊断工具. 工具的使用场景: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception ...

最新文章

  1. 基于Springboot实现送水公司信息管理
  2. java calendar field_Java Calendar详解
  3. [PHP] 存储改造中的逻辑和清理遗留的问题
  4. iOS-格式化金额,三位一逗号
  5. 软件开发demo是什么意思_地府后台管理系统demo出来了!附地址
  6. ajaxpro.2.dll使用【转帖】
  7. Android 自定义UI--电池
  8. python 输出颜色的设置
  9. is内存地址 id 地址比较 小数据池概念
  10. Jave基本知识(一)
  11. PHP 微信公众号消息加解密
  12. psp软件设计需求分析
  13. AI Security2-投毒攻击(Poisoning Attacks)
  14. 华为Freebuds 5电量耐用吗?续航怎么样?
  15. 【数据压缩】WAV文件和AVI文件格式分析
  16. extern的几种用法
  17. Java中Set接口
  18. 深入理解Same-Origin安全机制
  19. 微信群管理之全网黑名单的实现
  20. Python基础入门----递归

热门文章

  1. android的各种*.img 文件
  2. 【PC工具】U盘SD卡测试工具,速度测试,坏块测试查找
  3. QTcreator 多线程(生产者消费者)
  4. vuex - 基础篇
  5. 自学Zabbix3.0版本以上资产清单inventory
  6. springmvc自定义日期编辑器
  7. mysql_result()函数的简单使用
  8. actionscript代码练习作品
  9. GARFIELD@09-21-2004
  10. STM32向量表详细分析