【问题标题】:Use variables inside a quoted string in Javascript? [duplicate]在Javascript中使用带引号的字符串中的变量? [复制]
【发布时间】:2013-02-03 00:26:51
【问题描述】:

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

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

是否有可能在javascript中做类似的事情将字符串分成几部分:

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

感谢(提前)您的帮助。

【问题讨论】:

  • 好吧,你可以不用 $,但 alert(dog + " " + dog + " doo"); 是 javascript 方式。
  • 只需从您的示例中删除美元符号,它应该可以工作。
  • 您可以在 JS 中使用某种 sprintf 实现:stackoverflow.com/questions/610406/…

标签: javascript


【解决方案1】:

不,你不能。 Javascript没有string interpolation,所以必须连接:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      代替:

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

      你会使用:

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

      【讨论】:

        【解决方案4】:

        你需要做的就是使用字符串替换

        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);
        

        【讨论】:

          猜你喜欢
          • 2019-04-29
          • 2012-06-29
          • 2016-02-09
          • 2014-09-28
          • 1970-01-01
          • 2010-10-24
          • 2017-07-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多