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

如何将字符串内的ASCII值子串转为对应字符并修复Java代码报错问题

解法思路

  • 利用ASCII码取值范围为0~127、最长为3位的特点,遍历字符串时遇到非数字字符直接保留,遇到数字则收集后续连续的所有数字字符转成对应ASCII字符
  • 手动控制遍历指针的步进长度,处理完N位数字后指针直接跳N步,避免重复遍历和数组越界
  • 推荐用StringBuilder做字符串拼接,性能远高于直接对String做加法操作

完整可运行代码

public class AsciiConverter {
    public static void main(String[] args) {
        String str = "H105 68u100e33 65r101 89o117?";
        StringBuilder output = new StringBuilder();
        int i = 0;
        int len = str.length();
        while (i < len) {
            char current = str.charAt(i);
            if (!Character.isDigit(current)) {
                // 非数字直接追加,指针走1步
                output.append(current);
                i++;
            } else {
                // 收集连续的所有数字
                StringBuilder numStr = new StringBuilder();
                while (i < len && Character.isDigit(str.charAt(i))) {
                    numStr.append(str.charAt(i));
                    i++;
                }
                // 转成ASCII字符追加
                int asciiCode = Integer.parseInt(numStr.toString());
                output.append((char) asciiCode);
            }
        }
        System.out.println("output : " + output);
    }
}

运行结果

代码执行后输出如下,和需求完全匹配:

output : Hi Dude! Are You?

问题修复说明

  1. 支持任意长度的连续数字转换,自然覆盖3位ASCII的处理需求
  2. 每次调用charAt前都会判断指针是否超出字符串长度,彻底避免数组越界错误
  3. 严格匹配规则:每个非数字字符(字母、空格、标点)后跟随的连续数字都会被整体转义,不需要提前固定数字位数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:12:03