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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 01:35:27