跳转到主内容
极星编程网:以代码为星,赴技术山海!

如何从字符串中提取数字

本文介绍在 java 中使用 正则表达式 快速提取字符串中所有连续数字的方法,并给出安全转换为整数的完整示例及注意事项。 在实际开发中,经常需要从混合文本(如 "Task123"、"Order#4567-processed")中提取纯数字部分。最简洁高效的方式是利用 String.replaceAll() 配合正则表达式 [^0-9],该表达式表示“匹配所有非数字字符”,将其替换为空字符串后,即可保留原始字符串中的全部数字(按出现顺序拼接)。 例如:
String str = "Task1234"; String numberStr = str.replaceAll("[^0-9]", ""); // 结果:"1234"
⚠️ 注意:此方法会 合并所有数字片段 。若输入为 "A1B2C3",结果为 "123";若需提取首个数字子串(如 "1"),或区分多个独立数字(如 ["1", "2", "3"]),则应改用 Pattern + Matcher 进行分组匹配。 Eclipse导入Android或其他的JAVA项目的正确方法 WORD版 本文档主要讲述的是Eclipse导入Android或其他的JAVA项目的正确方法;希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看 下载 进一步,若需将提取结果转为 int 类型,务必进行空值和溢出校验:
if (numberStr.isEmpty()) { throw new IllegalArgumentException("No digit found in string: " + str); } try { int number = Integer.parseInt(numberStr); System.out.println("Extracted number: " + number); // 输出:1234 } catch (NumberFormatException e) { System.err.println("Number too large to fit in int: " + numberStr); }
✅ 总结: ✅ 简单场景(单组/拼接数字)→ 优先用 replaceAll("[^0-9]", ""); ✅ 复杂需求(多组、位置限定、带符号)→ 使用正则 Pattern.compile("\d+") 配合 Matcher.find(); ✅ 生产环境务必校验空字符串与数值范围,避免运行时异常。

相关文章