我厌倦了写这样的东西:
string_needed=“前缀.....”+主题+“后缀....”+名称+“测试”;
我想现在可能有人已经对此做了些什么了;)
发布于 2011-01-20 11:28:00
ES6更新:
ES6增加了模板字符串,使用反引号() instead of single or double quotes. In a template string, you can use the
${}`语法添加表达式)。使用您的示例,它将是:
string_needed = `prefix.....${topic}suffix....${name}testing`
原始答案:
对不起:(
我喜欢利用Array.join:
["prefix ....", topic, "suffix....", name, "testing"].join("")
或者使用String.concat
String.concat("a", 2, "c")
或者,您可以编写自己的连接函数:
var concat = function(/* args */) {
/*
* Something involving a loop through arguments
*/
}
或者使用第三方sprintf
函数,如http://www.diveintojavascript.com/projects/javascript-sprintf
发布于 2011-01-20 11:42:05
您可以考虑使用coffeescript来编写代码(它具有像Ruby ie #{foo}这样的插值功能)。
它会“编译”成javascript --所以你最终会得到像你所写的那样的javascript,但不需要编写/维护你已经厌倦的+++代码
我意识到,要求您考虑使用另一种语言是不是一个有效的答案,但考虑到coffeescript的工作方式,以及您的标签之一是Ruby,我希望它会通过。
发布于 2011-01-20 11:46:34
作为Javascript的好奇心,你可以实现一些基本上做类似Ruby插值的东西:
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
在字符串文字以外的任何东西上使用它都是自找麻烦的,而且无论如何它都可能相当慢(尽管我还没有测试过)。只是想让你知道。
https://stackoverflow.com/questions/4743137
复制相似问题