获取Javascript Web控制台日志格式化字符串

时间:2017-09-06 14:44:33

标签: javascript angularjs logging console

有没有办法从带有格式说明符的控制台日志访问格式化字符串?

https://console.spec.whatwg.org/#formatter

给出以下日志消息:

console.log('message with %s formatting specifiers %i', 'various', '01');

我希望以后的字符串可用于稍后的应用程序:

message with various formatting specifiers 1

1 个答案:

答案 0 :(得分:0)

我为此目的在网站上找到了一个很棒的String.prototype.printf()功能。它与您想要实现的类似。这是您要添加到javascript页面的整个原型。

String.prototype.printf = function (obj) {
  var useArguments = false;
  var _arguments = arguments;
  var i = -1;
  if (typeof _arguments[0] == "string") {
    useArguments = true;
  }
  if (obj instanceof Array || useArguments) {
    return this.replace(/\%s/g,
    function (a, b) {
      i++;
      if (useArguments) {
        if (typeof _arguments[i] == 'string') {
          return _arguments[i];
        }
        else {
          throw new Error("Arguments element is an invalid type");
        }
      }
      return obj[i];
    });
  }
  else {
    return this.replace(/{([^{}]*)}/g,
    function (a, b) {
      var r = obj[b];
      return typeof r === 'string' || typeof r === 'number' ? r : a;
    });
  }
};

包含它之后,这行代码返回Hello I am foo bar

console.log("Hello I am " + "%s %s".printf(["foo", "bar"])); //returns foo bar

有关详细信息,请参阅 here

如果您使用的是Node.JS

如果您正在使用Node.js,则可以要求使用util节点模块,并使用util.format()函数。请参阅下面的代码。

var util = require('util');

console.log(util.format('Hi %s', 'Jack'));
//returns Hi Jack