前言

今天偶然间发现了 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);
最后修改:2023 年 01 月 09 日
如果觉得我的文章对你有用,请随意赞赏