如何删除StringBuilder中语句的最后一个单词?代码问题求解
解决StringBuilder移除最后一个单词的问题
原代码的问题
你当前的代码里,builder.substring(0,builder.lastIndexOf(" ")-1) 存在两个关键问题:
substring()方法不会修改原StringBuilder对象,它仅返回新字符串,所以你的builder内容根本没发生变化;lastIndexOf(" ")-1的计算逻辑错误,会多删除一个字符,导致结果不符合预期。
正确实现方式
要移除最后一个单词(这里是"AND"),可以利用StringBuilder的delete()方法直接修改原对象,代码如下:
// 找到最后一个空格的索引位置 int lastSpacePos = builder.lastIndexOf(" "); if (lastSpacePos != -1) { // 从最后一个空格的位置开始,删除到字符串末尾 builder.delete(lastSpacePos, builder.length()); }
针对特殊场景的优化(可选)
如果你的代码中可能出现末尾有多个空格的情况(比如原append语句最后有" and "两个空格),可以先清理末尾空格再执行删除:
// 先移除末尾的所有空格 while (builder.length() > 0 && Character.isWhitespace(builder.charAt(builder.length() - 1))) { builder.setLength(builder.length() - 1); } // 再删除最后一个单词 int lastSpacePos = builder.lastIndexOf(" "); if (lastSpacePos != -1) { builder.delete(lastSpacePos, builder.length()); }
这样处理后,不管末尾有没有多余空格,都能准确移除最后一个单词。
内容的提问来源于stack exchange,提问作者darine
相关产品推荐
相关产品推荐

