首页 > 解决方案 > 从字符串中删除所有非数字

问题描述

我正在实现一个可以输入任何字符的计算器。但是,我想从输入的内容中提取数字并将它们加在一起。

输入的示例可能是:

"//;\n1;2"

这里的结果应该是 3。

我想要做的是用空替换字符串中的每个非数字。

string.replaceAll("\\D", "");

当我之后打印字符串时,我得到:

//;
1;2

当我尝试将数字相加时,出现异常:

java.lang.NumberFormatException: For input string: ""

我究竟做错了什么?

标签: javaregexnumberformatexception

解决方案


字符串是不可变的。一旦你有了一个 String 对象,它的内容就永远不会改变。

为了向您提供不同的字符串,replaceAll() 会返回一个带有请求更改的新字符串,所有其他类似方法也是如此。它不会改变字符串的内容,这是不可能的。

你需要做:

string = string.replaceAll("\\D", "");

推荐阅读