Java如何修改代码实现删除字符串内指定字母的所有出现
问题修改方案
你不用纠结多索引拼接的复杂逻辑,下面三种简单改法都可以实现删除指定字符所有出现的需求:
方案1:遍历字符拼接(最直观,性能稳定)
直接遍历输入字符串的每一个字符,只要不是要删除的目标字符就拼到结果里,完全不需要处理索引切割逻辑:
public static String removeChar(String text, char c) { StringBuilder result = new StringBuilder(); for (int i = 0; i < text.length(); i++) { char current = text.charAt(i); if (current != c) { result.append(current); } } return result.toString(); }
用StringBuilder是为了避免循环拼接String产生过多临时对象,短文本场景下直接用String拼接也可以正常运行。
方案2:沿用原有切割逻辑循环删除
如果你还是想保留你原来的索引切割思路,只要加一层循环反复查找目标字符位置,直到indexOf返回-1(代表没有剩余目标字符)即可:
public static String removeChar(String text, char c) { String result = text; int i1; while ((i1 = result.indexOf(c)) != -1) { result = result.substring(0, i1) + result.substring(i1 + 1); } return result; }
方案3:直接调用JDK内置方法(最简写法)
String类自带的replace方法本身就会替换所有匹配的字符/字符串,一行代码就能搞定需求:
public static String removeChar(String text, char c) { return text.replace(Character.toString(c), ""); }
以上三种方案任意改完后,运行你的main方法都可以得到预期输出Ths txt my b rdbl witht vwls!。
内容的提问来源于stack exchange,提问作者Dave Twickenham
相关产品推荐
相关产品推荐

