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

如何在Java中提取字符串数字、移除数字并存储输出过滤后的字符串?

在Java中提取字符串数字、过滤非数字内容并打印的实现方法

嘿,我来帮你搞定这个需求——在Java里提取字符串中的数字,同时把移除数字后的字符串存起来并打印。下面给你两种实用的实现方式,按需选择就行:

方法一:正则表达式(最简洁高效)

正则表达式是处理这类字符串替换/提取的利器,Java的String类提供的replaceAll()方法可以直接搞定。

代码示例

public class StringFilterDemo {
    public static void main(String[] args) {
        String txt = "d89%l++5r19o7W *o=1645le9H";
        
        // 1. 提取字符串中的所有数字
        String extractedNumbers = txt.replaceAll("[^\\d]", "");
        // 2. 移除数字,得到过滤后的字符串
        String filteredText = txt.replaceAll("\\d", "");
        
        // 打印结果
        System.out.println("提取到的数字:" + extractedNumbers);
        System.out.println("移除数字后的字符串:" + filteredText);
    }
}

代码解释

  • replaceAll("[^\\d]", ""):[^\\d]表示非数字的字符,把所有非数字替换成空字符串,就得到了纯数字的字符串。
  • replaceAll("\\d", ""):\\d表示单个数字字符,把所有数字替换成空字符串,就得到了移除数字后的内容。
  • 注意:Java里正则的反斜杠需要转义,所以要用\\d而不是JS里的\d哦。

方法二:遍历字符逐个判断(更灵活)

如果你需要更精细的控制(比如自定义哪些字符保留/移除),可以手动遍历字符串的每个字符,判断是否为数字后分别处理。

代码示例

public class StringFilterDemo {
    public static void main(String[] args) {
        String txt = "d89%l++5r19o7W *o=1645le9H";
        
        StringBuilder numbersBuilder = new StringBuilder();
        StringBuilder filteredBuilder = new StringBuilder();
        
        // 遍历每个字符
        for (char c : txt.toCharArray()) {
            if (Character.isDigit(c)) {
                // 如果是数字,添加到数字字符串的构建器
                numbersBuilder.append(c);
            } else {
                // 非数字,添加到过滤后的字符串构建器
                filteredBuilder.append(c);
            }
        }
        
        // 转成String类型存储
        String extractedNumbers = numbersBuilder.toString();
        String filteredText = filteredBuilder.toString();
        
        // 打印结果
        System.out.println("提取到的数字:" + extractedNumbers);
        System.out.println("移除数字后的字符串:" + filteredText);
    }
}

代码解释

  • 用toCharArray()把字符串转成字符数组,方便遍历。
  • Character.isDigit(c)用来判断当前字符是否是数字。
  • 用StringBuilder来拼接字符,比直接用String拼接效率更高(因为String是不可变对象,每次拼接都会生成新对象)。

运行上面任意一段代码,输出结果都会是:

提取到的数字:89519716459
移除数字后的字符串:d%l++roW *o=leH

内容的提问来源于stack exchange,提问作者Arya Deep Chowdhury

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 15:32:36