scala - 如何从scala中的字符串中提取带小数的数字?
问题描述
从带小数的字符串中提取数字:
1.8 min
如何获得 1.8
replaceAll("\\D+","")) gives 18 string but not 1.8
解决方案
您Regex
只是删除所有非数字字符。但是,数字的十进制表示不是一系列数字,它是一系列数字,后跟一个小数分隔符(.
在美国、,
德国等),然后是另一个数字系列。那里可能还有数千个分隔符(,
在美国,.
或者在德国,'
在其他一些国家,等等)。此外,小数部分可能是可选的。
您必须决定要处理多少复杂性。
让我们找一个中间部分:可选的小数部分,没有千位分隔符:
private final val decimal = """(?<value>\d+[.,]?\d*)""".r.unanchored
"1,8 min" match {
case decimal(value) => BigDecimal(value.replace(",", "."))
case _ => BigDecimal(0)
}
推荐阅读
- c++ - C/C++ 中的 const 数组和静态 const 数组有什么区别
- c# - 如何将两个连接字符串作为一个传递
- eclipse - 如何在 Appium 中从右到左滚动布局视图?
- python - Python 脚本 - 函数/外部脚本 (___main___) 中的 tkinter 和破折号
- javascript - 缓慢调度多个动作 Redux React
- ios - 上传 Xcode 存档时“未找到合适的应用程序记录”
- behat - 服务“environment.manager”依赖于不存在的服务“behatch.http_call.request”
- python - 模型如何在随机数据上获得完全相同的准确性?
- angular - 如何使用 mat-autocomplete 完全重置 mat-input
- docker - Docker 多阶段构建的问题