繁体   English   中英

在不知道 Javascript 中使用的格式的情况下将数字字符串转换为数字

[英]Number string to number without knowing the format used in Javascript

是否有一种通用方式或正则表达式可以处理字符串中所有可能的数字格式并转换为正确的数字。 例如:

"1.234,21" to 1234.21
"1,234.21" to 1234.21
"1234,21" to 1234.21
"1234.21" to 1234.21
"1,234,567.21" to 1234567.21
"1.234.567,21" to 1234567.21

解决方案

有点hacky,但有效:

 const strings = [ "1.234,21", "1,234.21", "1234,21", "1234.21", "1,234,567.21", "1.234.567,21", '1234' ] const numbers = strings.map(str => { const [, int, frac] = str.match(/^(\d+(?:[,.]\d+)*?)+?(?:[,.](\d+))?$/) return Number(int.replace(/[,.]/g, '')) + (frac? Number('0.' + frac): 0) }) console.log(numbers)

解释

这个正则表达式将字符串分成两部分,最后一个,.

/^(\d+(?:[,.]\d+)*?)+?(?:[,.](\d+))?$/

这会将 integer 部分转换为数字:

Number(int.replace(/[,.]/g, ''))

这会将小数部分转换为数字(如果存在):

frac ? Number('0.' + frac) : 0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM