如何在 Reason 中串入 matchAll?
How to String matchAll in Reason?
我正在尝试用 matchAll()
复制我在 javascript 中所做的事情
const names = [
...withoutSlashes.matchAll(/(?<=Pos\. \d+ \- )(.*?)(?=","Importe)/g),
];
我看到 Reason 有 Js.String.match
但我找不到 matchAll。我想这是因为 matchAll 是一个较新的 ecmascript。
关于哪种方法是执行高性能 matchAll 的好方法的任何提示?还是我缺少特定的 Reason 功能?
你可以自己绑定。它最大的问题是它 returns 是一个迭代器,我们也没有绑定它。但是我们可以使用 Js.Array.array_like('a)
然后使用 Js.Array.from
:
将其转换为数组
[@bs.send.pipe: string]
external matchAll: Js.Re.t => Js.Array.array_like(array(string)) = "matchAll";
let matches = "abc" |> matchAll([%re "/[a-c]/g"]) |> Js.Array.from;
基于已接受的答案,我想添加一个遵循 ReScript 约定的版本。 [@bs.send.pipe]
不被鼓励,ReScript语言官方推荐pipe-first运算符(->
代替|>
)。
像这样:
[@bs.send]
external matchAll: (string, Js.Re.t) => Js.Array.array_like(array(string)) =
"matchAll";
let matches: array(string) =
matchAll("abc", [%re "/[a-c]/g"])->Js.Array.from;
我正在尝试用 matchAll()
const names = [
...withoutSlashes.matchAll(/(?<=Pos\. \d+ \- )(.*?)(?=","Importe)/g),
];
我看到 Reason 有 Js.String.match
但我找不到 matchAll。我想这是因为 matchAll 是一个较新的 ecmascript。
关于哪种方法是执行高性能 matchAll 的好方法的任何提示?还是我缺少特定的 Reason 功能?
你可以自己绑定。它最大的问题是它 returns 是一个迭代器,我们也没有绑定它。但是我们可以使用 Js.Array.array_like('a)
然后使用 Js.Array.from
:
[@bs.send.pipe: string]
external matchAll: Js.Re.t => Js.Array.array_like(array(string)) = "matchAll";
let matches = "abc" |> matchAll([%re "/[a-c]/g"]) |> Js.Array.from;
基于已接受的答案,我想添加一个遵循 ReScript 约定的版本。 [@bs.send.pipe]
不被鼓励,ReScript语言官方推荐pipe-first运算符(->
代替|>
)。
像这样:
[@bs.send]
external matchAll: (string, Js.Re.t) => Js.Array.array_like(array(string)) =
"matchAll";
let matches: array(string) =
matchAll("abc", [%re "/[a-c]/g"])->Js.Array.from;