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

如何移除StringBuilder末尾8字符并追加剩余内容到另一个StringBuilder

问题分析

原代码的核心问题在于循环过程中重复追加截取后的字符串,且逻辑顺序混乱:

  • 每次遇到数字字符时,都会将当前的modifiedStr追加到sb,导致当sb2长度超过8后,每处理一个数字就重复添加一次截取结果(比如sb2长度到9时截取得到"1",后续每处理一个数字就追加一次"1",最终出现"117")
  • 没有等到所有数字收集完成后再统一处理截取,而是边收集边截取追加,逻辑完全错误
修正方案

调整逻辑:先完整遍历原字符串,将非数字字符直接追加到sb,所有数字字符统一收集到sb2;遍历完成后,再从sb2中截取掉末尾8个字符的部分,追加到sb末尾。

修正后的代码如下:

public class Student{

    public static void main(String[] args) {
        String fileNameEdit = "student_1733332211";
        StringBuilder sb = new StringBuilder();
        StringBuilder sb2 = new StringBuilder();
        
        // 先遍历收集非数字字符和所有数字
        for (int i = 0; i < fileNameEdit.length(); i++) {
            char c = fileNameEdit.charAt(i);
            if (c >= '0' && c <= '9') {
                sb2.append(c);
            } else {
                sb.append(c);
            }
        }
        
        // 处理数字部分:移除末尾8个字符,剩余部分追加到sb
        if (sb2.length() > 8) {
            String modifiedStr = sb2.substring(0, sb2.length() - 8);
            sb.append(modifiedStr);
        } else {
            // 若数字长度不足8,按需求可选择追加全部或不追加,此处按示例逻辑追加全部
            sb.append(sb2);
        }

        System.out.println("sb:   "+sb);
        System.out.println("sb2:  "+sb2);
    }
}
运行结果
sb:   student_17
sb2:  1733332211

如果想更简洁,也可以用字符串正则处理代替循环:

public class Student{
    public static void main(String[] args) {
        String fileNameEdit = "student_1733332211";
        // 分离非数字部分和数字部分
        String nonDigitPart = fileNameEdit.replaceAll("\\d", "");
        String digitPart = fileNameEdit.replaceAll("\\D", "");
        
        StringBuilder sb = new StringBuilder(nonDigitPart);
        StringBuilder sb2 = new StringBuilder(digitPart);
        
        if (digitPart.length() > 8) {
            sb.append(digitPart.substring(0, digitPart.length() - 8));
        } else {
            sb.append(digitPart);
        }
        
        System.out.println("sb:   "+sb);
        System.out.println("sb2:  "+sb2);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 06:30:18