如何不使用正则删除Java字符串数组各元素中的特殊字符
问题排查
原代码存在以下错误:
- 缺少内层循环遍历单个字符串的所有字符:原代码仅用数组下标
i作为字符串的字符索引,不仅无法覆盖字符串全部字符,当字符串长度小于数组长度时还会触发索引越界异常 - 结果数组元素初始为
null,直接执行+=拼接操作会把null作为字符串前缀拼入结果,导致输出异常 - 分支逻辑错误:只要遇到非字母字符就直接将当前元素赋值为空串,会丢失该位置之前已经匹配到的合法字母
正确实现
public static String[] removeCharacters(String[] arr){ // 初始化结果数组,长度和输入数组一致 String[] result = new String[arr.length]; // 外层遍历每个数组元素 for (int i = 0; i < arr.length; i++) { StringBuilder sb = new StringBuilder(); String current = arr[i]; // 内层遍历当前字符串的每个字符 for (int j = 0; j < current.length(); j++) { char c = current.charAt(j); // 仅保留字母字符 if (Character.isLetter(c)) { sb.append(c); } } result[i] = sb.toString(); } return result; }
验证示例
输入["Hel123&$$o", "#$%World", "###"],运行方法后返回结果为["Hello", "World", ""],完全符合需求。
内容的提问来源于stack exchange,提问作者brmk
相关产品推荐
相关产品推荐

