给定一个字符串(实际上是svg路径),例如:
"M72 0v754h405v-86h-311v-211h302v-86h-302v-285h311v-86h-405z"
我想获得一个数组,其中每个元素都是一个字母,或者是一个完整的正数或负数,如下所示:
[M, 72, 0, v, 754, h, 405, v, -86, h, -311, v, -211, h, 302, v, -86, h, -302, v, -285, h, 311, v, -86, h, -405, z]
我曾考虑过将split()与正则表达式一起使用,但我认为这不适用于诸如“ M72”之类的相邻元素,因为它们之间我没有目标可用于拆分。
唯一的解决方案是否是每个字符循环的自定义字符,它可以找到我要查找的每种类型的元素的开始和结尾(可能是使用正则表达式)?
谢谢
最佳答案
您可以将字母或数字与可选的减号匹配。
var string = "M72 0v754h405v-86h-311v-211h302v-86h-302v-285h311v-86h-405zx-12.4y0.001",
parts = string.match(/[a-z]|-?\d+\.?\d*/gi);
console.log(parts);