我供给用命令Javascript函数字符串(SVG路径命令):解析文本中的特殊字符串(例如“%var%”)?
eg. "move 10 10 line 50 50"
举动和线是命令
号码被X,Y坐标
我想特殊字符串添加到这些命令,将指示功能,使用特定的变量
eg. "move %mouseX%+1 %mouseY%+1"
其中%mouseX%和%mouseY的%将鼠标X, y坐标
我该如何解析并替换这些?
我供给用命令Javascript函数字符串(SVG路径命令):解析文本中的特殊字符串(例如“%var%”)?
eg. "move 10 10 line 50 50"
举动和线是命令
号码被X,Y坐标
我想特殊字符串添加到这些命令,将指示功能,使用特定的变量
eg. "move %mouseX%+1 %mouseY%+1"
其中%mouseX%和%mouseY的%将鼠标X, y坐标
我该如何解析并替换这些?
对于这种类型的字符串操作,作为一个起点,你可能需要使用String.prototype.replace
功能的强大功能的优势,利用其回调函数:
function replaceTokens(str, replacement) {
return str.replace(/\%([^%]+)\%/g, function (string, match) {
return replacement[match];
});
}
replaceTokens("move %mouseX%+1 %mouseY%+1", {mouseX: 100, mouseY: 200});
// returns "move 100+1 200+1"
replaceTokens("%foo% %bar%!!!", {foo: 'Hello', bar: 'World'});
// returns Hello World!!!
replaceTokens("I'm %name%, and I %action% %place%", {name: 'CMS',
action: 'love',
place:'StackOverflow'
}); // "I'm CMS, and I love StackOverflow"
那只是关于一个简单的例子你可以用这种技术做的事情。这个小功能将使您能够在一个步骤中完成多个%令牌%替换。
推荐文章:
var command = 'move %mouseX%+1 %mouseY%+1';
command = command.replace('%mouseX%', mouseX).replace('%mouseY%', mouseY);
如果mouseX和mouseY的是按住鼠标位置的变量。
使我很大的意义。 – RadiantHex 2010-01-21 04:18:14
很有帮助。如果您不想对特殊变量名称进行硬编码并认为可以添加更多,CMS的答案非常适合。 – 2010-01-21 04:19:24
顺便说一句,有一个问题,它只会取代第一次发生! – RadiantHex 2010-01-21 05:05:12
哇我真的很喜欢这个答案,谢谢! – RadiantHex 2010-01-21 04:19:04