作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们正在处理一个可以包含整数、 float 和字符的字符串。
示例:
.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 string ='.12A1.3B.5CD',
array = string
.replace(/((^|[a-z])(?=\.))|([a-z](?=[a-z]))/gi, '$&0')
.match(/[.0-9]+|[a-z]/gi)
.map(v => v == +v ? +v : v);
console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }
关于javascript - 将字符串拆分为 float 和字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46455781/
我是一名优秀的程序员,十分优秀!