2013-02-02 58 views
0

在php中,你可以使用雙引號內的變量。例如:在Javascript中引用的字符串內使用變量?

$dog = "scooby"; 
echo "$dog $dog doo"; 

是否有可能做在JavaScript 類似的東西,而不打破串起來成片:

var dog = "scooby"; 
alert($dog + " " + $dog + " doo"); 

感謝(提前)對你的幫助。

+2

好了,你會做它沒有$,但'警報(狗+ 「」 +狗+ 「鬥」) ;'是javascript的方式。 – Pete

+0

只要從你的例子中刪除美元符號,它應該工作。 –

+0

你可以在JS中使用某種'sprintf'實現:http://stackoverflow.com/questions/610406/javascript-equivalent-to-printf-string-format。 –

回答

2

不,你不能。 JavaScript沒有string interpolation,所以你必須連接:

var dog = "fido" 
dog + " " + dog + " doo" 
1

不,因爲JavaScript中沒有變量的轉義字符。

0

所有你需要做的是利用字符串替換

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/replace

如果你想讓它做根據的道理,你」 ð需要一些更多的工作:

function replacer(match, p1, string){ 
    // p1 is the first group (\w+) 
    var stuff = { 
    dog: "woof", 
    cat: "meow" 
    }; 
    return stuff[p1] || ""; 
}; 
newString = "A dog says $dog. A cat says $cat.".replace(/\$(\w+)/g, replacer); 

結果

"A dog says woof. A cat says meow." 

編輯:其實,如果你想在全局變量上做一種字符串插值,這也很容易,雖然我不會推薦這個請不要除非你有一個非常好的理由。如果你說你有一個很好的理由,我可能不會相信你。我的第一個例子,我給一個特定的字典/對象進行搜索,更好。 請不要因爲這個工作而污染全局命名空間!

var dog ="woof"; 
var cat = "meow"; 
function replacer(match, p1, string){ 
    return window[p1] || ""; 
}; 
newString = "A dog says $dog. A cat says $cat.".replace(/\$(\w+)/g, replacer); 
1

本地化,不可能。但是,如果您不介意使用庫,則可以使用此sprintf的Javascript實現。

相反的:

var dog = "scooby"; 
alert($dog + " " + $dog + " doo"); 

你可以使用:

alert(sprintf('%s %s doo', 'dog', 'dog'));