Java中从混合字符串提取字母及空格生成新字符串的方法求助
提取隐藏字符的解决思路
核心目标
从给定字符串中筛选出所有字母(大小写都算)和空格,丢弃其他所有字符,拼接后得到隐藏信息。
分步实现逻辑
1. 明确筛选规则
Java提供了两个直接能用的判断方法,不用自己写复杂的字符范围判断:
Character.isLetter(char c):传入一个字符,返回true则说明是字母Character.isSpaceChar(char c):传入一个字符,返回true则说明是空格
2. 遍历+筛选+拼接
你用for循环和charAt()的思路完全正确,问题大概率出在判断条件或拼接方式上,按下面的步骤来:
- 先创建一个
StringBuilder对象(比直接用String拼接更高效,新手也容易上手),用来临时存储筛选出来的字符 - 用
for循环遍历原字符串的每一个索引:从0开始,到secret.length() - 1结束(字符串索引从0开始,最后一个字符的索引是长度减1) - 每次循环中,用
secret.charAt(i)拿到当前索引对应的字符 - 用上面的两个判断方法检查字符:如果是字母或空格,就调用
result.append(currentChar)把它加到结果里
3. 完整代码示例
public class GetSecretMessage { public static void main(String[] args) { String secret = "H)86(e,@€l:-;l?,;5o"; StringBuilder result = new StringBuilder(); for (int i = 0; i < secret.length(); i++) { char currentChar = secret.charAt(i); // 只保留字母和空格 if (Character.isLetter(currentChar) || Character.isSpaceChar(currentChar)) { result.append(currentChar); } } // 输出最终的隐藏信息 System.out.println(result.toString()); // 运行结果:Hello } }
常见出错点排查
- 判断条件不全:比如只判断了
currentChar >= 'A' && currentChar <= 'Z',漏掉了小写字母;或者忘了保留空格的逻辑 - 循环范围错误:如果循环写了
i <= secret.length(),会导致索引越界(因为最大索引是length()-1) - 字符串拼接方式问题:如果用
String result = "";然后result += currentChar;,虽然能运行,但效率低,且新手容易初始化错误
内容的提问来源于stack exchange,提问作者Jose M Lopez
相关产品推荐
相关产品推荐

