java中删除字符串所有数字最常用方法是replaceall("d", "");若需支持unicode数字(如全角、中文数字),应使用"p{nd}";手动遍历可用stringbuilder配合character.isdigit()。

Java 中删除字符串中所有数字字符,最常用且简洁的方法是使用 String.replaceAll() 配合正则表达式 "\d"。
用 replaceAll 删除所有数字
正则 "d" 匹配任意一个数字字符(0–9),replaceAll 会将其全部替换为空字符串:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
- String result = originalString.replaceAll("\d", "");
- 注意:原始字符串不会被修改(String 不可变),返回的是新字符串
- 例如:
"a1b2c3".replaceAll("\d", "")→"abc"
处理 Unicode 数字(如全角数字)
如果字符串中可能含中文数字(如“123”)或其它 Unicode 数字,"\d" 默认只匹配 ASCII 数字。此时可改用 "\p{Nd}"(Unicode 数字类别):
- String result = originalString.replaceAll("\p{Nd}", "");
- 它能匹配阿拉伯数字、全角数字、罗马数字符号等符合 Unicode “Number, decimal digit” 类别的字符
- 例如:
"abc123".replaceAll("\p{Nd}", "")→"abc"
用 StringBuilder 手动遍历(适合复杂逻辑或性能敏感场景)
若需在过滤时加入额外判断(比如保留某些特定数字),或对超长字符串做更精细控制,可用循环 + StringBuilder:
- 遍历每个字符,用
Character.isDigit(ch)判断是否为数字 - 不是数字才追加到
StringBuilder中 - 最后调用
toString()得到结果
注意点
- 不要用
replace("\d", "")—— 它是字面量替换,不会触发正则,无法匹配数字 - 避免用
replaceAll("[0-9]", "")虽然可行,但不如"\d"简洁通用 - 如果原字符串为
null,直接调用replaceAll会抛出NullPointerException,建议先判空
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










