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

Java抛出NumberFormatException:输入字符串“7500000<!---->”如何处理?

异常引发原因

你获取的元素innerHTML内容中不仅包含价格数字,还携带了前端框架渲染后残留的HTML注释<!---->、换行符、多余空白字符,你当前的清洗逻辑仅替换了$和千位分隔逗号,没有过滤掉这些非数字的非法内容,导致传入Integer.parseInt()的字符串不符合数字格式要求,抛出该异常。

解决方案
  • 方案1:优先使用可见文本代替innerHTML
    元素的innerText(或Selenium自带的getText()方法)只会返回页面渲染后用户可见的文本,不会包含HTML注释、标签等不可见内容,修改获取价格字符串的逻辑即可:
List<Integer> ar = new ArrayList<Integer>();
// Below loop for converting string to int and adding to list.
for (int in = 0; in < count; in++) {
        // 直接用getText()获取可见文本,不需要调用JS拿innerHTML
        String str = AllCardPrice.get(in).getText().trim();
        String str1 = str.replace("$", "").replace(",", "").trim();
        System.out.println("Amount on card " + str);
        if (!str1.equals("")) {
           int priceoncard = Integer.parseInt(str1);
           ar.add(priceoncard);
        }
   }
  • 方案2:如果业务必须使用innerHTML,用正则全量过滤非数字字符
    不需要逐个替换指定符号,直接用正则匹配所有非0-9的字符全部删除,不管是注释、换行、符号还是空白都能一次性处理,仅需要修改字符串清洗行即可:
String str1 = str.replaceAll("[^0-9]", "");

注意:如果后续业务涉及带小数的价格,可将正则调整为[^0-9.],先转Double类型后再按需转换为Integer即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:06:05