如何用千位分隔符解析两个 space 分隔的数字?
How to parse two space-delimited numbers with thousand separator?
我需要解析包含两个可能在三种情况下的数字的字符串:
"646.60 25.10" => [646.60 25.10]
"1 395.86 13.50" => [1395.86, 13.50]
"13.50 1 783.69" => [13.50, 1 783.69]
在简单的情况下,使用 'number'.join(' ')
就足够了,但在某些情况下,有千位分隔符,例如第二个和第三个。
那么我该如何解析所有情况下的数字?
编辑:所有数字的最后一段都有一个小数分隔符。
var string1 = "646.60 25.10";// => [646.60 25.10]
var string2 = "1 395.86 13,50";// => [1395.86, 13,50]
var string3 = "13.50 1 783.69"; // => [13.50, 1 783.69]
function getArray(s) {
var index = s.indexOf(" ", s.indexOf("."));
return [s.substring(0,index), s.substring(index+1) ];
}
console.log(getArray(string1));
console.log(getArray(string2));
console.log(getArray(string3));
假设每个数字都以点-数字-数字结尾(在您的评论中说他们这样做),您可以使用它来定位正确的位置以使用正则表达式进行拆分。
这样,它对于任意数量的数字(尽管您指定只有两个)和数字中的任意数量的数字都是健壮和通用的,只要它以 digit-dot-digit-digit:
str1 = "4 435.89 1 333 456.90 7.54";
function splitToNumbers(str){
arr = str.replace(/\s+/g,'').split(/(\d+.\d\d)/);
//now clear the empty strings however you like
arr.shift();
arr.pop();
arr = arr.join('&').split(/&+/);
return arr;
}
console.log(splitToNumbers(str1));
//4435.89,1333456.90,7.54
我需要解析包含两个可能在三种情况下的数字的字符串:
"646.60 25.10" => [646.60 25.10]
"1 395.86 13.50" => [1395.86, 13.50]
"13.50 1 783.69" => [13.50, 1 783.69]
在简单的情况下,使用 'number'.join(' ')
就足够了,但在某些情况下,有千位分隔符,例如第二个和第三个。
那么我该如何解析所有情况下的数字?
编辑:所有数字的最后一段都有一个小数分隔符。
var string1 = "646.60 25.10";// => [646.60 25.10]
var string2 = "1 395.86 13,50";// => [1395.86, 13,50]
var string3 = "13.50 1 783.69"; // => [13.50, 1 783.69]
function getArray(s) {
var index = s.indexOf(" ", s.indexOf("."));
return [s.substring(0,index), s.substring(index+1) ];
}
console.log(getArray(string1));
console.log(getArray(string2));
console.log(getArray(string3));
假设每个数字都以点-数字-数字结尾(在您的评论中说他们这样做),您可以使用它来定位正确的位置以使用正则表达式进行拆分。 这样,它对于任意数量的数字(尽管您指定只有两个)和数字中的任意数量的数字都是健壮和通用的,只要它以 digit-dot-digit-digit:
str1 = "4 435.89 1 333 456.90 7.54";
function splitToNumbers(str){
arr = str.replace(/\s+/g,'').split(/(\d+.\d\d)/);
//now clear the empty strings however you like
arr.shift();
arr.pop();
arr = arr.join('&').split(/&+/);
return arr;
}
console.log(splitToNumbers(str1));
//4435.89,1333456.90,7.54