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

Java字符串删除大写字符时报cannot find symbol错误求助

嘿,我来帮你搞定这个问题!

首先,你遇到的cannot find symbol - method delete(int,int)错误,核心原因很简单:Java里的String类是不可变的,它根本没有delete()方法。你想调用的修改字符串的方法,其实是属于StringBuilder或者StringBuffer的——这两个是专门用来处理可变字符串的类。

除了这个核心问题,你的代码还有几个小坑:

  • int l = s.length()后面少了分号,这会直接导致编译失败;
  • 就算你换成了可变字符串类,原有的循环逻辑也有问题:当你删除一个字符后,字符串的长度会变短,后面的字符会往前移位,这时候继续i++就会跳过下一个字符;而且你写的delete(i,(i+2))是删除两个字符,但你只需要删除当前的大写字符,应该用delete(i, i+1)(因为这个方法是左闭右开的区间)。

修正后的代码(用StringBuilder)

String s = "Some Random Sentence Here";
StringBuilder sb = new StringBuilder(s);
for (int i = 0; i < sb.length(); ) { // 这里不直接i++,避免索引错位
    char ch = sb.charAt(i);
    if (Character.isUpperCase(ch)) {
        sb.delete(i, i + 1); // 删除当前位置的大写字符
    } else {
        i++; // 只有没删除字符时,才移动索引
    }
}
System.out.println(sb.toString());

更简洁的写法(正则表达式)

如果你不想写循环,用正则表达式一行就能搞定:

String s = "Some Random Sentence Here";
String result = s.replaceAll("[A-Z]", "");
System.out.println(result);

这个方法里,[A-Z]匹配所有大写英文字母,replaceAll()会把所有匹配到的内容替换成空字符串,直接得到去掉所有大写字符的结果,效率也很高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:36:39