首页 > 编程语言 >如何从文本字符串提取纯数字

如何从文本字符串提取纯数字

来源:互联网 2026-06-24 20:29:00

在 Selenium 自动化测试中,常常会遇到带格式的文本,比如 "$1,299.99" 这样的价格。本文要解决的,就是如何从中精准提取出纯数字,并转换成可以直接用于计算或比价的数值类型。 问题背景:Selenium 获取的价格文本包含多余字符 用 Selenium 抓取网页上的价格时,比如拿到的元

在 Selenium 自动化测试中,常常会遇到带格式的文本,比如 "$1,299.99" 这样的价格。本文要解决的,就是如何从中精准提取出纯数字,并转换成可以直接用于计算或比价的数值类型。

问题背景:Selenium 获取的价格文本包含多余字符

用 Selenium 抓取网页上的价格时,比如拿到的元素文本是

$1,299.99

getText() 返回的是原始 DOM 文本——里面混着货币符号、逗号、小数点,甚至可能还有空格。要想做数值比较、存数据库或者继续计算,必须先清洗掉这些非数字字符,再转成标准的 doubleint 类型。

长期稳定更新的攒劲资源: >>>点此立即查看<<<

核心方法:使用正则表达式清洗文本并提取纯数字

最推荐的做法是用正则表达式来做健壮的清洗。下面这个通用工具方法可以直接用:

public static String extractDigitsAndDot(String input) {    if (input == null || input.trim().isEmpty()) {        return "0";    }    // 保留数字、小数点(.),移除所有其他字符(含 $、,、空格、、 等)    return input.replaceAll("[^d.]", "");}

注意一下:这里的正则 [^d.] 意思是“匹配所有非数字且非小数点的字符”,比 [^d.] 更简洁安全(Java 中 \d 已经涵盖 Unicode 数字,. 在字符类里不需要转义)。如果想保留千分位逗号后面的小数点(比如 "1,299.99" → "1299.99"),这个逻辑天然兼容——因为逗号被清掉了,只剩下数字和小数点。

数值类型转换:从清洗后的字符串到可计算的数字

接着可以安全地转成数值类型:

String rawPrice = price.getText(); // e.g., "$1,299.99"String cleanPriceStr = extractDigitsAndDot(rawPrice); // → "1299.99"// 转 double(推荐:保留小数精度,适合价格计算)double numericPrice = Double.parseDouble(cleanPriceStr);// 或转整数(仅当明确需去小数,如单位为“分”时可乘100后转 long)long cents = Math.round(numericPrice * 100); // 避免浮点误差,用于精确金额处理System.out.println("Raw: " + rawPrice);System.out.println("Clean: " + cleanPriceStr);System.out.println("As double: " + numericPrice);System.out.println("Cents: " + cents);

最佳实践建议

  • getText() 的结果一定要做空值和空字符串校验,不然容易抛出 NullPointerExceptionNumberFormatException
  • 如果价格里可能出现多个小数点(比如 "1.234.56"),就需要额外处理——比如只保留最后一个点。
  • 对于国际化站点,可以考虑用 NumberFormatDecimalFormat 解析(需要指定 Locale),但正则清洗 + Double.parseDouble 在大部分场景下更轻量、更可靠。
  • 最终入库或者比价前,建议统一用 BigDecimal 处理货币,避免 double 的浮点精度问题(你懂的,0.1 + 0.2 并不等于 0.3)。

有了这套方法,不管是 "$1,299.99"、"2,580" 还是 "99.95",都能稳定高效地转成可运算的纯数字,无缝接入你的比价系统或数据分析流程。

侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述

热游推荐

更多
湘ICP备14008430号-1 湘公网安备 43070302000280号
All Rights Reserved
本站为非盈利网站,不接受任何广告。本站所有软件,都由网友
上传,如有侵犯你的版权,请发邮件给xiayx666@163.com
抵制不良色情、反动、暴力游戏。注意自我保护,谨防受骗上当。
适度游戏益脑,沉迷游戏伤身。合理安排时间,享受健康生活。