在Chrome控制台中显示控制字符?

7

是否有任何办法可以强制 Chrome 的 JS 控制台像 Firefox 一样显示换行符?

Chrome:

enter image description here

Firefox:

enter image description here

可能会有某个隐藏的开关吗?


我猜想类似于 x.replace(/\n/g,"\\n") 这样的方法不太可行?(或者使用FF,它似乎默认就能实现你想要的效果。) - nnnnnn
@nnnnnn:这是我试图在Chrome中模仿的行为。然而,似乎没有任何隐藏的开关。 - Blender
是的,我明白了。我想最坏的情况是,如果您需要复制粘贴该值或其他内容,您可以手动输入一个.replace()语句,就像我之前的评论一样,或者定义一个函数来执行此操作,这样您就不必每次都输入它。(笨拙吗?是的,我承认。) - nnnnnn
你能告诉我们如何在Firefox中显示这些字符吗?我已经困扰了20分钟,通过谷歌搜索也找不到解决这个问题的好方法。 - João Pimentel Ferreira
@JoãoPimentelFerreira:自23.0版本起,Firefox停止显示像这样的字符串。 - Blender
4个回答

10
你可以使用encodeURI来显示隐藏的内容。
像这样encodeURI("a\nb")代替"a\nb"

Chrome EncodeURI


2
在 node.js 中,require("util").inspect 做了非常类似的事情。然而,我还没有找到一个浏览器等效的方法,不过幸运地是 node.js 的实现 相当简单:
JSON.stringify(value)
    .replace(/^"|"$/g, '')
    .replace(/'/g, "\\'")
    .replace(/\\"/g, '"')
;

在你的情况下,只需要使用 JSON.stringify(value) 就可以了。
希望这能帮到你。

1

您可以将值转换为字符串以获取这些不可见字符:

> JSON.stringify("a\nb")
<- ""a\nb""

0

你可以尝试这种方式

var x = 'a\\nb';

编辑:

您可以在字符串中使用十六进制字符。

\ = '\u005C'
> var x = 'a\u005Cnb';
> x
<- "a\nb"
> x === "a\nb" is false.
> x === "a\\nb" is true or x === 'a\u005Cnb' is true.

你可以查看链接。

http://mathiasbynens.be/notes/javascript-escapes http://code.cside.com/3rdpage/us/javaUnicode/converter.html


但是 x !== 'a\nb'。我只是想改变控制台如何显示 x,而不是 x 本身。Firefox 内置的控制台将像 \n 这样的控制字符显示为字面上的 \n。Chrome 将它们呈现为实际的换行符。 - Blender
我已经编辑了我的问题并添加了截图。这应该能够消除混淆。 - Blender

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接