【发布时间】:2021-10-30 15:11:12
【问题描述】:
这是我想做的事情:
function convertVersionToNumber(line) {
const groups = line.matchAll(/^# ([0-9]).([0-9][0-9]).([0-9][0-9])\s*/g);
return parseInt(groups[1] + groups[2] + groups[3]);
}
convertVersionToNumber("# 1.03.00")
这不起作用,因为groups 是IterableIterator<RegExpMatchArray>,而不是数组。 Array.from 似乎也没有把它变成一组组。有没有一种简单的方法(理想情况下可以放在一行上)可以将groups 转换为数组?
IterableIterator<RegExpMatchArray> 的 API 有点不方便,我不知道如何跳过for...of 中的第一个元素。我的意思是,我确实知道如何使用这两个,它似乎要添加 4+ 行所以我想知道是否有更简洁的方法。
我正在使用打字稿,所以如果它有任何语法糖可以做到这一点,我很乐意使用它。
【问题讨论】:
-
你能不能试着用
Array.from包裹line.matchAll -
@zecuria 在我实际问这个问题之前我试过了。我不知道它返回的是什么,但它似乎没有将它返回到数组中。
-
@zecuria 感谢上帝的打字稿。我的 IDE 告诉我它正在返回
RegExpMatchArray[]。但这不能加在一起。
标签: javascript regex typescript