【问题标题】:console.log Stripping Carriage Returns (displaying as a literal ↵)console.log 剥离回车(显示为文字 ↵)
【发布时间】:2012-11-15 09:24:20
【问题描述】:

我正在尝试编写一个 JavaScript 函数,通过 console.log 将字符串打印到控制台。但是,字符串中有回车符,它显示为文字 ↵ 字符,而不是创建一个新行。这是 console.log 的限制,还是有办法解决这个问题?

谢谢!

编辑:我实际上是想在一个对象中打印这个函数。比如:

function blah() {
};
console.log({ "function" : blah });

我最初并没有想到要提及它,但在尝试了 crowjonah 的解决方案后,我意识到 console.log 显然将直接传递的字符串与传递给另一个对象的字符串区别对待。

【问题讨论】:

  • 你用什么回车? \r\n 似乎在 chrome 控制台和 console.log() 中对我有用
  • \n,但还有一个我没想到要提及的额外限制;查看已编辑的问题。
  • 如果我们知道 blah() 是什么会有所帮助。

标签: javascript firebug google-chrome-devtools


【解决方案1】:

在打印包含多行字符串的对象时,Chrome 会将\n 呈现为。但是,您可以简单地双击记录的字符串以使用正确的换行符查看它。

【讨论】:

  • 除非你得到<string is too large to edit>。 (-‸ლ)
【解决方案2】:

这是控制台的限制。但您可以创建一个解决方法:

function multiLineLog(msg) {
    msg = msg.split(/[\r\n]+/g);
    for (var a=0; a < msg.length; a++) console.log(msg[a]);
}

【讨论】:

    【解决方案3】:

    在日志消息中使用\n,只要您希望有一个换行符。

    console.log('first line \nsecond line');
    

    如果“回车”是 html 元素,例如 &lt;br&gt;,您可以对字符串运行替换以自动完成

    var newLogMessage = multiLineLogMessage.replace('<br>', '\n');
    console.log(newLogMessage);
    

    【讨论】:

    • 只有将字符串直接传递给console.log才有效吗?我正在尝试类似function blah() {}; console.log({ "function" : blah }); 的东西,它只是再次用文字回车符替换换行符:(
    【解决方案4】:

    这是SReject's solution的修改版:

    const log = line => console.log(line);
    const multiLineLog = msg => msg.split(/[\r\n]+/g).forEach(log);
    
    const data = { a: { b: { c: null } } };
    
    multiLineLog(JSON.stringify(data, null, 2));
    .as-console-wrapper { top: 0; max-height: 100% !important; }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-28
      • 2017-05-13
      • 1970-01-01
      相关资源
      最近更新 更多