2010-01-21 22 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