2010-01-21 51 views
0

我供给用命令Javascript函数字符串(SVG路径命令):解析文本中的特殊字符串(例如“%var%”)?

eg. "move 10 10 line 50 50" 

举动和线命令

号码X,Y坐标

我想特殊字符串添加到这些命令,将指示功能,使用特定的变量

eg. "move %mouseX%+1 %mouseY%+1" 

其中%mouseX%和%mouseY的%将鼠标X, y坐标

我该如何解析并替换这些?

回答

6

对于这种类型的字符串操作,作为一个起点,你可能需要使用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" 

那只是关于一个简单的例子你可以用这种技术做的事情。这个小功能将使您能够在一个步骤中完成多个%令牌%替换。

推荐文章:

+1

哇我真的很喜欢这个答案,谢谢! – RadiantHex 2010-01-21 04:19:04

2

您可以使用拆分方法拆分字符串。并且结果将是数组。然后用所需的索引值替换相应的索引值。

split

为了让你可以使用鼠标位置e.PageXe.PageY

Mouse position

3
var command = 'move %mouseX%+1 %mouseY%+1'; 
command = command.replace('%mouseX%', mouseX).replace('%mouseY%', mouseY); 

如果mouseX和mouseY的是按住鼠标位置的变量。

+0

使我很大的意义。 – RadiantHex 2010-01-21 04:18:14

+2

很有帮助。如果您不想对特殊变量名称进行硬编码并认为可以添加更多,CMS的答案非常适合。 – 2010-01-21 04:19:24

+0

顺便说一句,有一个问题,它只会取代第一次发生! – RadiantHex 2010-01-21 05:05:12