Java代码替换字符串单引号为逗号报错:inline eval ''问题排查
问题排查与代码修正
我来帮你梳理下这段Java代码里的关键问题,顺便给出修正后的版本~
首先,咱们拆解下原代码里的几个错误:
- 数组长度调用错误:数组的长度是通过
length属性获取的,不是方法,所以word.length()会直接编译报错,得改成word.length。 - 数组元素访问逻辑错误:
word是String类型的数组,你直接调用word.charAt(j)是不对的——要先拿到数组里的单个字符串元素word[j],再对这个元素做字符操作。 - String不可变性误解:String是不可变对象,
replaceAll方法不会修改原字符串,而是返回一个新的字符串对象,所以你必须把替换后的结果重新赋值给数组对应的元素,不然原数组不会有任何变化。 - 冗余的字符遍历:其实完全没必要逐个字符判断是否是单引号,直接用
replace(或replaceAll)就能一次性替换所有单引号,效率更高也更简洁。
修正后的代码
public class Main { public static void main(String[] args) { String[] word = {"2'442'031.67" , "9'031.67" , "79'442'031.67", "delivered"}; // 遍历数组中的每个字符串元素 for(int j = 0; j < word.length; j++) { // 用replace替换所有单引号为逗号,这里不需要正则,replace更直观 word[j] = word[j].replace("'", ","); } // 输出验证结果 for(String str : word) { System.out.println(str); } } }
额外说明
- 如果想用
replaceAll也可以,因为单引号在正则里没有特殊含义,写法是word[j] = word[j].replaceAll("'", ",");,效果和replace完全一致,但replace在这里更贴合需求——它专门用来替换所有匹配的字符序列,不需要正则支持。 - 原代码里的字符判断逻辑完全多余,
replace/replaceAll会自动处理字符串里所有匹配的单引号,不管位置在哪里。
内容的提问来源于stack exchange,提问作者funDaa
相关产品推荐
相关产品推荐

