Java中删除字符串所有数字最常用方法是replaceAll("d", "");若需支持Unicode数字(如全角、中文数字),应使用"p{Nd}";手动遍历可用StringBuilder配合Character.isDigit()。

Java 中删除字符串中所有数字字符,最常用且简洁的方法是使用 String.replaceAll() 配合正则表达式 "\d"。
用 replaceAll 删除所有数字
正则 "\d" 匹配任意一个数字字符(0–9),replaceAll 会将其全部替换为空字符串:
- 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:
立即学习“Java免费学习笔记(深入)”;
- 遍历每个字符,用
Character.isDigit(ch)判断是否为数字 - 不是数字才追加到
StringBuilder中 - 最后调用
toString()得到结果
注意点
- 不要用
replace("\d", "")—— 它是字面量替换,不会触发正则,无法匹配数字 - 避免用
replaceAll("[0-9]", "")虽然可行,但不如"\d"简洁通用 - 如果原字符串为
null,直接调用replaceAll会抛出NullPointerException,建议先判空


















