java - 从字符串中删除所有非数字
问题描述
我正在实现一个可以输入任何字符的计算器。但是,我想从输入的内容中提取数字并将它们加在一起。
输入的示例可能是:
"//;\n1;2"
这里的结果应该是 3。
我想要做的是用空替换字符串中的每个非数字。
string.replaceAll("\\D", "");
当我之后打印字符串时,我得到:
//;
1;2
当我尝试将数字相加时,出现异常:
java.lang.NumberFormatException: For input string: ""
我究竟做错了什么?
解决方案
字符串是不可变的。一旦你有了一个 String 对象,它的内容就永远不会改变。
为了向您提供不同的字符串,replaceAll() 会返回一个带有请求更改的新字符串,所有其他类似方法也是如此。它不会改变字符串的内容,这是不可能的。
你需要做:
string = string.replaceAll("\\D", "");
推荐阅读
- javascript - 如何使用循环创建多个对象属性
- macos - 适用于 Mac Apple Silicon 的通用构建 CorePlot 框架
- reactjs - React Calendly Package 无限加载
- android - 未验证 App Store ID 或 Google Play 包名称
- airflow - 添加了气流模板字段,但像 {{ ds }} 这样的变量不起作用
- python - Django 表单验证:显示输入有效日期,但给出的日期是正确的
- excel - 有条件地在工作表之间复制、粘贴、删除数据丢失
- security - 我们可以将加密的秘密(安全地)存储在环境变量中吗?
- javascript - 我如何导出一个 JavaScript 类
- pandas - 使用pandas库根据csv中的另一个列值填充空白值