栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 实现repalceAll只替换第二个匹配到的字符串

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 实现repalceAll只替换第二个匹配到的字符串

String replace replaceFirst repaceAll区别

replace(char oldChar, char newChar)

返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。

replaceAll(String regex, String replacement)

使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串

replaceFirst(String regex, String replacement)

使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。

总结:

replace 替换的是char,replaceAll、replaceFirst替换的可以是字符串,也可以是正则表达式;三者返回的都是一个新的字符串。

例题

需求:将字符串 time:[* TO *] 中第二个*替换为 test

实现代码

@Test 
public void replaceSecondStr() { 
 String test = "time:[* TO *]"; 
 String result1 = test.replaceAll("(\*)(.*?)(\1)(.*?)", "$1$2test$4"); 
 System.out.println("原字符串:" + test);
 System.out.println("替换后:" + result1);
}

输出:

原字符串:time:[* TO *]

替换后:time:[* TO test]

总结:

正则中()表示提取匹配的字符串并分组;会分配存储空间,可以用$1取得匹配到的字符串;

\1表示与第一个()中匹配的内容相同,也可以继续写(\*);

(.*?)为勉强匹配方式,意思是匹配任何字符。

补充(取出匹配到的字符串)

@Test
public void findGroup() {
 String test = "time:[* TO *]";
 Matcher matcher = Pattern.compile("(\*)(.*?)(\1)(.*?)").matcher(test);
 if (matcher.find()) {
  System.out.println(matcher.group());
 }
}

补充知识:java字符串的操作:去除字符、替换字符、多个字符分隔字符串

看代码吧~

// 去除空格,换行,制表符
public String replaceBlank(String str) {
String dest = "";
if (str!=null) {
Pattern p = Pattern.compile("\s*|t|r|n"); // 去除多个空格,去除制表符,回车,换行
Matcher m = p.matcher(str);
dest = m.replaceAll("");
}
return dest;
}
String s = "你要去除的字符串";

1.去除空格:s = s.replace('\s','');

2.去除回车:s = s.replace('n','');

字符串去除多个字符串(括号):

String cal = tableStrings.get(i).replaceAll("\(|\)", ""); // 去除左右括号

字符串分隔多个字符:

String[] temp = cal.split("\+|\-|\*|\/"); // 按照加减乘除字符分隔字符串

以上这篇Java 实现repalceAll只替换第二个匹配到的字符串就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/130057.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号