首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >javascript中任何类似于ruby的#{value} (字符串插值)的东西

javascript中任何类似于ruby的#{value} (字符串插值)的东西
EN

Stack Overflow用户
提问于 2011-01-20 11:21:59
回答 5查看 9.9K关注 0票数 18

我厌倦了写这样的东西:

string_needed=“前缀.....”+主题+“后缀....”+名称+“测试”;

我想现在可能有人已经对此做了些什么了;)

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-01-20 11:28:00

ES6更新:

ES6增加了模板字符串,使用反引号() instead of single or double quotes. In a template string, you can use the${}`语法添加表达式)。使用您的示例,它将是:

代码语言:javascript
复制
string_needed = `prefix.....${topic}suffix....${name}testing`

原始答案:

对不起:(

我喜欢利用Array.join:

代码语言:javascript
复制
["prefix ....", topic, "suffix....", name, "testing"].join("")

或者使用String.concat

代码语言:javascript
复制
String.concat("a", 2, "c")

或者,您可以编写自己的连接函数:

代码语言:javascript
复制
var concat = function(/* args */) {
    /*
     * Something involving a loop through arguments
     */
}

或者使用第三方sprintf函数,如http://www.diveintojavascript.com/projects/javascript-sprintf

票数 18
EN

Stack Overflow用户

发布于 2011-01-20 11:42:05

您可以考虑使用coffeescript来编写代码(它具有像Ruby ie #{foo}这样的插值功能)。

它会“编译”成javascript --所以你最终会得到像你所写的那样的javascript,但不需要编写/维护你已经厌倦的+++代码

我意识到,要求您考虑使用另一种语言是不是一个有效的答案,但考虑到coffeescript的工作方式,以及您的标签之一是Ruby,我希望它会通过。

票数 10
EN

Stack Overflow用户

发布于 2011-01-20 11:46:34

作为Javascript的好奇心,你可以实现一些基本上做类似Ruby插值的东西:

代码语言:javascript
复制
sub = function(str) {
  return str.replace(/#\{(.*?)\}/g,
    function(whole, expr) {
      return eval(expr)
    })
}

js> y = "world!"
world!
js> sub("Hello #{y}")
Hello world!
js> sub("1 + 1 = #{1 + 1}")
1 + 1 = 2

在字符串文字以外的任何东西上使用它都是自找麻烦的,而且无论如何它都可能相当慢(尽管我还没有测试过)。只是想让你知道。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4743137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档