You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中ArrayList处理非数字字符后出现多余点,求错误原因与解决方法

问题分析与解决

你的问题出在正则表达式的规则设定上:
你使用的[^0-9.]是保留所有数字和小数点,但原字符串里的Rs.包含一个小数点,这个点位于数字前方,替换后被保留了下来,所以才出现.365这类带前置点的结果。

修正方案

方法1:直接移除所有非数字字符

既然目标是获取纯整数,不需要保留小数点,把正则改成排除所有非数字字符即可:

moisturizersPrices.replaceAll("[^0-9]", "");

执行后所有非数字内容(包括Price:、Rs.里的字母和点)都会被清空,直接得到纯数字字符串。

方法2:精准提取数字片段(更鲁棒)

如果字符串里可能存在其他复杂干扰内容,用正则匹配提取连续数字会更可靠:

moisturizersPrices.replaceAll(".*?(\\d+).*", "$1");

这个规则会匹配任意字符直到找到连续的数字序列,然后只保留这个数字部分,彻底忽略前后的无关内容。

两种方法处理后,最终都会得到你期望的结果:
[365, 299, 12, 220, 95, 216]

内容的提问来源于stack exchange,提问作者qatesterbecomingprogrammer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 12:47:18