JavaScript:如何从字符串

时间:2017-09-21 23:02:55

标签: javascript regex string

我正在使用RPG Maker MV,它是一个使用JavaScript创建插件的游戏创建者。我已经有一个JavaScript插件,但是我正在尝试编辑插件的一部分,以便它基本上检查游戏中的某个字符是否存在某个字符串,如果是,则将特定变量设置为该字符串中的数字

for (var i = 0; i < page.list.length; i++) {
    if (page.list[i].code == 108 && page.list[i].parameters[0].contains("<post:" + (n) + "," + (n) + ">")) {
        var post = page.list[i].parameters[0];
        var array = post.split(',');
        this._origMovement.x = Number(array[1]);
        this._origMovement.y = Number(array[1]);
        break;
    };
};

所以我知道前2行可以工作,并且当我只放一个特定的字符串时包含作品。但是,我无法弄清楚如何检查由逗号分隔并包含在'&lt;&gt;'中的2个数字标签,不知道数字是什么。

然后它需要提取这些数字并将其分配给this._origMovement.x,将另一个分配给this._origMovement.y。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

这是我使用正则表达式的极少数情况之一。如果您在我建议阅读它们的介绍之前没有遇到正则表达式,例如:https://regexone.com/

在你的情况下,你可能想要这样的东西:

var myRegex = /<post:(\d+),(\d+)>/;
var matches = myParameter.match(myRegex);
this._origMovement.x = matches[1];   //the first number
this._origMovement.y = matches[2];   //the second number

myRegex变量是一个正则表达式,用于查找您描述的模式,并有2个捕获组,用于查找一个或多个数字的字符串(\d+表示“一个或多个数字”)。 .match()调用的结果为您提供了一个包含整个匹配和捕获组结果的数组。

如果要允许十进制数,则需要使用允许小数点的其他捕获组,例如([\d\.]+),这意味着“一个或多个数字和小数点的序列“或更复杂,(\d+\.?\d*),这是”一个或多个数字的序列,后跟一个可选的小数点,后跟零个或多个数字。“

有很多很好的教程可以帮助你编写好的正则表达式,以及可以帮助你对表达式进行实时测试以确保它们正常工作的网站。它们是一个强大的工具,但要注意不要过度使用它们!

答案 1 :(得分:0)

让它发挥作用。对于任何可能感兴趣的人,代码如下。

    for (var i = 0; i < page.list.length; i++) {
        if (page.list[i].code == 108 && page.list[i].parameters[0].contains("<post:")) {
            var myRegex = /<post:(\d+),(\d+)>/;
            var matches = page.list[i].parameters[0].match(myRegex);
            this._origMovement.x = matches[1];   //the first number
            this._origMovement.y = matches[2];   //the second number
            break;
        }
    };