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

Java如何从给定字符串中分别提取并打印字母、数字及特殊字符

Java字符串字符分类打印实现方案

需求说明

需实现从输入字符串中分类提取字母、数字、特殊字符并按指定格式打印的功能,给定基准测试信息如下:

  • 测试字符串:str = "aQt4512m@!%n"
  • 预期输出:character:aQtmn , Number:4512 special:@!%

原有代码缺陷

原有实现无法正确输出数字和特殊字符,核心问题如下:

  • 字符判断逻辑仅覆盖ASCII码65~122区间,未单独区分数字、特殊字符分支,且该区间本身包含[、]、^等非字母符号,判断逻辑不准确
  • 字符收集逻辑仅对命中65~122区间的字符做存储,数字、特殊字符从始至终未被归集
  • 逐字符打印+正则替换的逻辑无法实现分类归集后统一按格式输出的要求

正确实现代码

通过遍历字符+类型判断+分类归集的方式实现,逻辑清晰无额外依赖:

public class CharClassification {
    public static void main(String[] args) {
        String str = "aQt4512m@!%n";
        // 分别定义三类字符的存储缓冲区
        StringBuilder letters = new StringBuilder();
        StringBuilder numbers = new StringBuilder();
        StringBuilder specialChars = new StringBuilder();

        // 遍历字符串每个字符做类型判断
        for (char c : str.toCharArray()) {
            if (Character.isLetter(c)) {
                letters.append(c);
            } else if (Character.isDigit(c)) {
                numbers.append(c);
            } else {
                specialChars.append(c);
            }
        }

        // 按要求格式拼接输出
        System.out.printf("character:%s , Number:%s special:%s%n",
                letters, numbers, specialChars);
    }
}

如果不希望使用Character类内置的判断方法,也可以直接通过ASCII码区间做判断,替换上述循环中的判断逻辑即可,判断规则:

  • 大写字母:c >= 'A' && c <= 'Z'
  • 小写字母:c >= 'a' && c <= 'z'
  • 数字:c >= '0' && c <= '9'
  • 其余字符统一归为特殊字符

运行验证

运行上述代码,控制台输出与预期完全一致:

character:aQtmn , Number:4512 special:@!%

内容的提问来源于stack exchange,提问作者Ash28

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:51:20