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

dm7nw8vv  于 2022-10-31  发布在  Angular
关注(0)|答案(2)|浏览(186)

有没有办法从控制台日志中使用格式化说明符访问格式化字符串?
https://console.spec.whatwg.org/#formatter
给出以下日志消息:

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

我希望以下字符串可供以后在应用程序中使用:

message with various formatting specifiers 1
2o7dmzc5

2o7dmzc51#

有一个很棒的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
mnemlml8

mnemlml82#

我找不到相关文档,但现在似乎已将其内置到console.log中:console.log( "native %s", "support" )

相关问题