[英]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.