You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java8中如何将匹配的指定子串替换为等长星号字符串

问题原因

你写的代码无法正常运行,核心原因有两点:

  • Java 语法不支持使用*运算符直接操作字符串实现重复拼接,"*"*word1.length()本身属于非法语法,无法通过编译
  • Java 8 版本确实没有提供String.repeat()方法,无法直接调用生成定长重复字符序列,需要自行实现等长星号字符串的生成逻辑。

另外补充:如果是替换固定字面量子串,优先用String.replace()而非replaceAll(),后者是正则匹配模式,如果目标子串包含正则特殊字符会出现匹配异常,性能也略低。

正确实现方案

方案1:固定子串替换(适配你的当前需求)

Java 8 中生成定长重复字符最高效简洁的写法是利用char数组默认初始化特性:new String(new char[长度]).replace('\0', '*'),初始化char数组时元素默认是空字符\0,替换后就能得到对应长度的连续*串。
完整可运行代码:

public class Demo {
    public static void main(String[] args) {
        String s = "abcdefgh";
        String word1 = "abc";
        // 生成等长*替换串
        String replaceStr = new String(new char[word1.length()]).replace('\0', '*');
        s = s.replace(word1, replaceStr);
        System.out.println("s = " + s);
    }
}

运行输出完全符合预期:

s = ***defgh

方案2:动态正则替换(适配匹配子串长度不固定的场景)

如果你需要匹配的子串长度不是固定值(比如匹配所有连续字母片段),可以用Matcher循环处理每个匹配结果,动态生成对应长度的*串:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Demo {
    public static void main(String[] args) {
        String s = "abcdefghabctest";
        // 配置需要匹配的正则规则
        Pattern pattern = Pattern.compile("abc");
        Matcher matcher = pattern.matcher(s);
        StringBuffer sb = new StringBuffer();
        while (matcher.find()) {
            int matchLength = matcher.group().length();
            String starStr = new String(new char[matchLength]).replace('\0', '*');
            matcher.appendReplacement(sb, starStr);
        }
        matcher.appendTail(sb);
        s = sb.toString();
        System.out.println("s = " + s);
        // 输出:s = ***defgh***test
    }
}
注意事项
  • 不要用直接拼接String的循环方式生成串:类似String starStr = ""; for(...) starStr += "*"的写法会生成大量无用的中间字符串对象,性能很差,不推荐使用。
  • 如果要手写循环实现重复字符逻辑,优先用StringBuilder减少对象开销,参考写法:
StringBuilder sb = new StringBuilder();
for (int i = 0; i < word1.length(); i++) {
    sb.append('*');
}
String starStr = sb.toString();

内容的提问来源于stack exchange,提问作者dsknjksad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 12:39:50