Javascript 将字符串拆分为浮点数和字符数组

Javascript 将字符串拆分为浮点数和字符数组,javascript,arrays,regex,Javascript,Arrays,Regex,我们正在处理一个可以包含整数、浮点数和字符的字符串 例如: .12A1.3B.5CD 我想把这个字符串转换成一个数字和字符数组 [.12,A,1.3,B,.5,C,0,D] (如果字母前面没有数字,则假定为0) 我尝试了不同的正则表达式组合,但无法使任何组合像: str.match(/[a-zA-Z]+?[0-9]*\.?[0-9]+/g) 但它给我的结果是: [“12”、“A”、“1”、“3”、“B”、“5”、“CD”] 切掉小数点,不将“D”分隔为“0,D” 同样,期望的结果是[.12,A

我们正在处理一个可以包含整数、浮点数和字符的字符串

例如:

.12A1.3B.5CD

我想把这个字符串转换成一个数字和字符数组

[.12,A,1.3,B,.5,C,0,D]

(如果字母前面没有数字,则假定为0)

我尝试了不同的正则表达式组合,但无法使任何组合像:

str.match(/[a-zA-Z]+?[0-9]*\.?[0-9]+/g)
但它给我的结果是:

[“12”、“A”、“1”、“3”、“B”、“5”、“CD”]

切掉小数点,不将“D”分隔为“0,D”

同样,期望的结果是[.12,A,1.3,B,.5,C,0,D]


有什么猜测吗?

如果每个字母后面跟着另一个字母,然后按字母拆分,则可以在每个字母后面加一个零:

var s=“.12A1.3B.5CD”;
console.log(
s、 替换(/([a-z])(?=[a-z])/gi,“$1”+“0”)。拆分(/([a-z])/i。筛选(x=>x!=”)

)
如果每个字母后面跟有另一个字母,则可以在每个字母后面加一个零,然后按字母拆分:

var s=“.12A1.3B.5CD”;
console.log(
s、 替换(/([a-z])(?=[a-z])/gi,“$1”+“0”)。拆分(/([a-z])/i。筛选(x=>x!=”)

)
这应该可以做到:

str.match(\([a-zA-Z]|[0-9]*\?[0-9]+)\g)

然后使用javascript在连续字母之间的数组中插入0


查看regex的一个好网站:

这应该可以做到:

str.match(\([a-zA-Z]|[0-9]*\?[0-9]+)\g)

然后使用javascript在连续字母之间的数组中插入0


查看regex的一个好网站:

您可以替换缺少的零并匹配部分。稍后在检查数字或字符串后映射值

var string='.12A1.3B.5CD',
数组=字符串
.替换(/((^[a-z])(?=\))([a-z](?=[a-z])/gi,$&0'))
.match(/[0-9]+|[a-z]/gi)
.map(v=>v==+v?+v:v);
console.log(数组)

。作为控制台包装{max height:100%!important;top:0;}
您可以替换缺少的零并匹配部件。稍后在检查数字或字符串后映射值

var string='.12A1.3B.5CD',
数组=字符串
.替换(/((^[a-z])(?=\))([a-z](?=[a-z])/gi,$&0'))
.match(/[0-9]+|[a-z]/gi)
.map(v=>v==+v?+v:v);
console.log(数组)
.as控制台包装{max height:100%!important;top:0;}
带有
String.match()
Array.reduce()
isNaN()
函数:

var s='.12A1.3B.5CD',上一页,
结果=s.match(/(\d*\)?\d+[a-zA-Z]/g)。reduce(函数(a,v){
v=+v | | v;
如果(a.length>1&&+v!==v&&isNaN(prev))a.push(0);
a、 推(v);
prev=v;
返回a;
}, []);
console.log(result)
带有
String.match()
Array.reduce()
isNaN()函数:

var s='.12A1.3B.5CD',上一页,
结果=s.match(/(\d*\)?\d+[a-zA-Z]/g)。reduce(函数(a,v){
v=+v | | v;
如果(a.length>1&&+v!==v&&isNaN(prev))a.push(0);
a、 推(v);
prev=v;
返回a;
}, []);

console.log(result)
我建议您查看和函数。我再次看到最慢的解决方案被接受并“过度点击”。悲伤但真实…我建议您查看和函数。我再次看到最慢的解决方案被接受并“过度点击”。悲哀但真实……它仍然没有在
C
D
之间插入
0
。语法错误(\而不是/)。它仍然没有在
C
D
之间插入
0
。语法是错误的(\而不是/)。您的方法只剩下将数字字符串转换为数字。一般来说,您的方法似乎是最快的。您的方法剩下的唯一一件事就是将数字字符串转换为数字。总的来说,你的方法似乎是最快的