s = 'hello %s, how are you doing' % (my_name)
在python中就是这么做的。如何在javascript/node.js中做到这一点?
s = 'hello %s, how are you doing' % (my_name)
在python中就是这么做的。如何在javascript/node.js中做到这一点?
当前回答
这样做:
s = 'hello ' + my_name + ', how are you doing'
更新
使用ES6,你也可以这样做:
s = `hello ${my_name}, how are you doing`
其他回答
这样做:
s = 'hello ' + my_name + ', how are you doing'
更新
使用ES6,你也可以这样做:
s = `hello ${my_name}, how are you doing`
我写了一个函数来精确地解决这个问题。
第一个参数是要参数化的字符串。你应该把你的变量放在这个字符串中,就像这样“%s1, %s2,…”% s12”。
其他参数分别是该字符串的参数。
/***
* @example parameterizedString("my name is %s1 and surname is %s2", "John", "Doe");
* @return "my name is John and surname is Doe"
*
* @firstArgument {String} like "my name is %s1 and surname is %s2"
* @otherArguments {String | Number}
* @returns {String}
*/
const parameterizedString = (...args) => {
const str = args[0];
const params = args.filter((arg, index) => index !== 0);
if (!str) return "";
return str.replace(/%s[0-9]+/g, matchedStr => {
const variableIndex = matchedStr.replace("%s", "") - 1;
return params[variableIndex];
});
}
例子
parameterizedString("my name is %s1 and surname is %s2", "John", "Doe");
// returns "my name is John and surname is Doe"
parameterizedString("this%s1 %s2 %s3", " method", "sooo", "goood");
// returns "this method sooo goood"
如果变量位置在字符串中改变了,这个函数也支持它而不改变函数参数。
parameterizedString("i have %s2 %s1 and %s4 %s3.", "books", 5, "pencils", "6");
// returns "i have 5 books and 6 pencils."
试试JS中的sprintf 或者你可以用这个要点
如果使用node.js, console.log()将format string作为第一个参数:
console.log('count: %d', count);
从node.js >4.0开始,它与ES6标准更加兼容,其中字符串操作得到了极大的改进。
原始问题的答案可以很简单:
var s = `hello ${my_name}, how are you doing`;
// note: tilt ` instead of single quote '
字符串可以展开多行,这使得模板或HTML/XML处理非常容易。关于它的更多细节和功能:模板字面量是在mozilla.org上的字符串字面量。