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

如何在Java中批量将字符串中的字母替换为对应数字?

问题解决:字母转对应数字的字符串替换

你的代码问题分析

  • 每次循环都基于原始字符串test执行替换操作,没有将上一次替换的结果传递给下一次循环,最终只有最后一次替换会生效
  • String.replace()的第二个参数如果传入int类型,会被解析为对应Unicode编码的字符,而非数字字符串。比如传入0时,实际会替换为空字符(Unicode值0),而不是字符串"0"

修正后的循环replace方案

String test = "FF432423FA112";
String[] letters = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
String newStr = test; // 初始化newStr为原始字符串
for (int i=0; i<letters.length; i++) {
    newStr = newStr.replace(letters[i], String.valueOf(i)); // 基于更新后的newStr继续替换,并将int转为字符串
}
System.out.println(newStr); // 输出:5543242350112

更高效的字符数组方案

由于String是不可变对象,循环调用replace()会创建多个中间字符串,效率偏低。直接操作字符数组是更优的选择:

String test = "FF432423FA112";
char[] chars = test.toCharArray();
for (int i = 0; i < chars.length; i++) {
    char c = chars[i];
    if (c >= 'A' && c <= 'Z') {
        // 计算对应数字:A(ASCII码65)对应0,通过c - 'A'得到偏移量,再转为数字字符
        chars[i] = (char) ('0' + (c - 'A'));
    }
}
String newStr = new String(chars);
System.out.println(newStr); // 输出:5543242350112

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 23:05:24