Javascript Regex为文本冒险游戏制作命令行解析器
Javascript Regex to make command line parser for Text Adventure Game
我正在尝试为文本冒险游戏编写命令行解析器。我把命令写进数组:Look, Talk, Get,等等…
我如何编写一个正则表达式,它将在命令行开头查找这些命令,忽略单词"at, with, on等",然后将命令行中其余的单词作为字符串拾取。例如,如果用户输入:"与孤独树交谈",我希望正则表达式找到"交谈"作为命令,忽略"与",然后将"孤独树"变成字符串。有什么代码建议吗?
这就是我想出来的,由于某种原因,当我把它放入HTML中时,页面是空白的:
//Iterate through the array to see if a command was used
var myStringArray = ["Look","Talk","Take"];
var arrayLength = myStringArray.length;
for (var i = 0; i < arrayLength; i++) {
//When it picks a particular word up it will save it.
var str = "Talk with Lonely Tree";
var textcmd = +str.split(' ')[0];
//replace the command word and unnecessary other words in the text
if (i == textcmd){
var objecttxt = str;
objecttxt = str.replace(textcmd, "")
var myUselessWords = ["on","with","at","to"];
var uselessLength = myUselessWords.length;
for (var t = 0; t < uselessLength; t++) {
var uselessCollection = [];
uselessCollection.push = t;
objecttxt = str.replace(t, "");
}
}
alert(objecttxt + " " + textcmd);
}
我会尝试另一种方法:
var input = userinput; //however you get it
var commands = [/look/i, /take/i, /talk/i];
var gameObjects = []; //push objects here as they're created
var command = commands.filter(function(r) { return input.match(r); });
var object = gameObjects.filter(function(obj) {
return input.match(new RegExp(obj.name, 'i');
});
if (command.length and object.length) {
//do stuff, remember that String.prototype.match returns an array even
//if there's only one match, so be sure to unbox
}
对于您的示例,应该这样做:
/('blook|look|talk|get)'b.*'b(lonely'Wtree|something'Welse)'b/g
用你指定的任何"孤独树"对象捕获你的任何命令。如果您想使用RegExes,请尝试http://regexr.com/
在你的情况下,我猜你的Regex可能会变得相当大,如果你有很多游戏命令和对象。如果您先检查命令,然后在第二步检查可能的对象,则性能会更好。
相关文章:
- 通过命令行/批处理文件打开页面时,将javascript代码注入Google Chrome
- 命令行中的Uglify js;不要弄乱变量名
- 如何在没有单词的情况下从命令行运行Node.js程序'节点'
- 类似HTML命令行的文本框
- 节点JS express和控制台输出到命令行与浏览器
- 如何将.json文件作为参数导入.js文件并使用命令行启动它
- 最小化CSS/JS文件,并使用命令行创建一个文件
- 自动关闭或覆盖通过命令行打开的浏览器选项卡
- 如何在节点模块中从命令行运行函数
- 如何在命令行中运行/调试javascript
- 从命令行安装时出现错误
- 如何在启动 Web 驱动程序实例之前通过命令行在 conf.js 中传递设备名称
- 使用 Node.js 执行命令行二进制文件
- 我们可以通过命令行从flash导出到createjs吗
- 命令行上的输入在什么时候解析为 node.js 中的 process.argv
- 命令行上的Intern找到nodemailer,但没有找到它所需的模块
- node.js命令行工具
- JavaScript/HTML命令行小部件
- 从命令行运行JS文件
- Javascript Regex为文本冒险游戏制作命令行解析器