前言
今天偶然间发现了 replaceFirst
方法的一些问题,因为我要做的功能是把字符串中第一个出现的内容替换掉,也就是说每一个需要替换的内容都有一个唯一的值,不能重复替换。
例如,字符串是 "123 12345"
,我只想替换123,使用 replace
方法的话,会把后面的 12345 也替换掉,所以我使用了 replaceFirst
方法。
出现问题
public static void main(String[] args) {
String str = "审批拒绝率(%)1";
str = str.replaceFirst("" + "审批拒绝率(%)", "hello");
System.out.println(str);
}
那么为什么会出现这个问题呢?
replaceFirst 方法的第一个参数是一个正则表达式,所以需要使用特殊字符来表示要匹配的字符。
例如,在正则表达式中,"." 可以匹配任意字符,"\d" 可以匹配任意数字,"\w" 可以匹配任意字母或数字。
所以最后选择了 subString
字符串拼接的方式做到替换
String str = "审批拒绝率(%)1";
int index = str.indexOf("审批拒绝率(%)");
if (index != -1) {
str = str.substring(0, index) + "hello" + str.substring(index + "审批拒绝率(%)".length());
}
System.out.println(str);