在console.log等字符串中替换变量

时间:2017-06-28 13:23:23

标签: javascript node.js string replace console.log

我想用console.log之类的字符串替换变量。 我想要实现的是这样的:

let str = 'My %s is %s.';

replaceStr(string, /* args */) {
    // I need help with defining this function
};

let newStr = replaceStr(str, 'name', 'Jackie');
console.log(newStr);
// output => My name is Jackie.

/*
   This is similar to how console.log does:
   // console.log('I\'m %s.', 'Jack');
   // => I'm Jack.
*/

我无法弄清楚如何做到这一点。任何帮助将不胜感激。

谢谢。

3 个答案:

答案 0 :(得分:3)

您可以将其原型化为String对象。像这样:

String.prototype.sprintf = function() {
    var counter = 0;
    var args = arguments;

    return this.replace(/%s/g, function() {
        return args[counter++];
    });
};

let str = 'My %s is %s.';
str = str.sprintf('name', 'Alex');
console.log(str); // 'My name is Alex'

答案 1 :(得分:1)

您可以使用点差运算符(ES6):

if (!TextBoxOutletPercentage.Focused)
                    TextBoxOutletPercentage.Enabled = false;

编辑:根据lexith的回答,我们可以避免显式循环:

if(!TextBoxInletPercentage.Focused)
                    TextBoxInletPercentage.Enabled = false;

答案 2 :(得分:0)

如果希望您想拥有自定义记录功能。
console.log可以替换%s,使用以下方法,您的自定义函数可以获得console.log的完整功能集,并且效率更高。

function myLogger() {
   if(logEnabled) {
      // you can play with arguments for any customisation's
      // arguments[0] is first string
      // prepend date in log  arguments[0] =  (new Date().toString()) + arguments[0] ;
      console.log.apply(console, arguments);
   }
}