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

Java中如何删除字符串中每第N个字符(如每第12个字符)

你写的正则.(.)和替换逻辑$12不符合需求,原因有两个:

  • 正则.(.)仅匹配连续2个字符,只能实现每2个字符删除1个的逻辑,和你要的间隔12删字符的需求不匹配
  • 替换值$12会被Java正则引擎识别为第12个捕获分组的内容,你的正则只有1个捕获组,无法取到对应值,自然输出错误。

方案1:正则实现(适合短字符串,代码简洁)

你需要构造动态正则匹配对应位置的待删除字符,逻辑如下:

String str = "~asdfl;kjx,~rgadfaeg,dsafnewgfljka;ldfjsfa;dlkjfa;lvjvbnaber;fwelfjadfafa";
int character = 12;
// 构造正则:每character个索引为一组,保留前character个(索引0到character-1),删除紧随的第character个索引对应的字符
String regex = "(.{" + character + "}).?";
String result = str.replaceAll(regex, "$1");
System.out.println(result);

注:如果你实际要删除的是常规理解的「每第character个字符」(即索引11、23等(i+1) % character == 0的位置),只需要把正则里的character改成character-1即可。


方案2:StringBuilder实现(性能更优,适合长字符串,逻辑更可控)

直接遍历字符串跳过要删除的索引即可:

String str = "~asdfl;kjx,~rgadfaeg,dsafnewgfljka;ldfjsfa;dlkjfa;lvjvbnaber;fwelfjadfafa";
int character = 12;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
    // 按你要求跳过索引为12、24等character整数倍的字符
    if (i % character != 0 || i == 0) {
        sb.append(str.charAt(i));
    }
}
String result = sb.toString();
System.out.println(result);

如果要适配常规的“每第character个字符删除”需求,把判断条件改成(i + 1) % character != 0即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:27:00