如何在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
相关产品推荐
相关产品推荐

