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

Java正则实现:将两个+之间的字符替换为等数量的-

原代码问题分析

你使用的正则-\\+-只能匹配固定的-+-字符序列,且匹配过程会消耗已命中的字符,无法覆盖首尾+之间的所有内容,因此无法得到预期结果。

正确实现方案

方案1:非正则实现(性能更高,逻辑直观)

直接根据首尾+的位置计算中间需要替换的长度,拼接结果即可,适配所有Java版本:

String s = "+-+-+-+";
// 先校验字符串符合首尾为+、长度至少为2的前提
if (s.startsWith("+") && s.endsWith("+") && s.length() >= 2) {
    int midLen = s.length() - 2;
    StringBuilder res = new StringBuilder(s.length());
    res.append('+');
    for (int i = 0; i < midLen; i++) {
        res.append('-');
    }
    res.append('+');
    s = res.toString();
}
System.out.println(s); // 输出 +-----+

方案2:正则实现(Java 11+支持)

利用正则断言匹配首尾+之间的所有内容,配合String.repeat生成等长的-:

String s = "+-+-+-+";
s = s.replaceAll("(?<=^\\+).*(?=\\+$)", matchResult -> "-".repeat(matchResult.group().length()));
System.out.println(s); // 输出 +-----+

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 01:27:03