javascript - 这个 String.Replace 方法在做什么?

标签 javascript regex string xojo

我正在尝试将此 Javascript 代码移植到另一种语言 (Xojo):

Vertices.fromPath = function(path, body) {
    var pathPattern = /L?\s*([\-\d\.e]+)[\s,]*([\-\d\.e]+)*/ig,
        points = [];

    path.replace(pathPattern, function(match, x, y) {
        points.push({ x: parseFloat(x), y: parseFloat(y) });
    });

    return Vertices.create(points, body);
};

我知道路径应该是一个包含 x y 对数字的字符串(采用 SVG 格式,如 "L 50 25 L 100 10")。我是否认为这会将较早的字符串拆分为两个对象 50,25100,10 然后将它们插入点数组?

最佳答案

不确定你是否知道 /L?\s*([\-\d\.e]+)[\s,]*([\-\d\.e]+)*/ig 是正则表达式搜索字符串。

如果我这么快破译,我会说它在开头寻找一个可选的“L”,然后是可选的空格,然后是一个数字(即任何包含数字、句点、减号或“e”的东西)、空格或逗号、另一个数字和数字两边的括号表示这些是在 replace() 调用中传递给函数的匹配值。最后的“ig”是选项,其中“i”表示忽略大小写 IIRC。

因此,该代码似乎只获取两个数字,可选地在前面加上一个“L”。然后它将这些数字读入 x 和 y,并将它们附加到 points 数组。

在 Xojo 中,您必须在循环中执行此操作(Xojo 不支持本地函数),使用 RegEx 类重复解析字符串。要将扫描的数字转换为 double ,请使用 Val() 函数。

关于javascript - 这个 String.Replace 方法在做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35524309/

相关文章:

javascript - 在 texbox 将其放入之前/之后追加 div

javascript - 正则表达式验证 PIN 码 JS

javascript - 如何使用 jquery 编写条件语句来验证页面 url 或电子邮件?

java - 关于 Google Web Toolkit (GWT) 和 HTML 页面中动态数据预处理的问题

javascript - 原始字符串到普通字符串 javascript

java - 从java中的String数组中拆分数字

java - 使用正则表达式组解析控制台输入的多个字段

python - 用于执行输入验证的正则表达式

java - 两种可能模式的复合正则表达式

检查 C 中特定字符值的字符串?