在Javascript中使用带引号的字符串中的变量?

时间:2013-02-02 16:02:48

标签: javascript

在php中你可以使用双引号内的变量。例如:

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

是否有可能在javascript 中执行类似的操作而不会将字符串分成几部分:

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

先谢谢你的帮助。

4 个答案:

答案 0 :(得分:2)

不,你不能。 Javascript没有string interpolation,因此您必须连接:

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

答案 1 :(得分:1)

不,因为JavaScript中的变量没有转义字符。

答案 2 :(得分:1)

本地,不可能。但是,如果您不介意使用库,则可以使用sprintf的这个Javascript实现。

而不是:

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

你会使用:

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

答案 3 :(得分: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);