我正在使用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。
非常感谢任何帮助。
答案 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;
}
};