Node.js中如何打印带换行的JavaScript模板字符串?
解决Node.js终端中模板字符串换行显示的问题
其实你举的例子里,正常情况下直接用console.log()输出模板字符串,\n就会自动转换成实际换行,根本不需要额外转换!比如运行这段代码:
let someVar = 'a'; let tsString = `here goes ${someVar}\nsome other line\nsome other line`; console.log(tsString);
终端会直接输出:
here goes a some other line some other line
那为什么你会遇到\n被原样输出的情况?大概率是你的字符串里的\n其实是转义后的字面量(也就是实际存储的是\\n,即反斜杠加n两个字符),而不是模板字符串原生支持的换行转义符。这种情况常见于从文件读取、API返回或者其他外部来源获取的字符串。
针对这种场景,给你两种常用的解决方法:
方法一:用replace()全局替换转义的换行符
通过正则表达式把所有的\\n替换成真正的\n:
let someVar = 'a'; // 注意这里的\\n是字面量的反斜杠和n let escapedString = `here goes ${someVar}\\nsome other line\\nsome other line`; let parsedString = escapedString.replace(/\\n/g, '\n'); console.log(parsedString);
方法二:如果是JSON格式字符串,用JSON.parse()解析
如果你的字符串是JSON格式的(比如被包裹在引号里),JSON.parse()会自动处理所有转义字符,包括\\n:
let someVar = 'a'; let jsonString = `"here goes ${someVar}\\nsome other line\\nsome other line"`; let parsedString = JSON.parse(jsonString); console.log(parsedString);
总结一下:模板字符串本身就支持\n转义,直接console.log()就会换行;只有当字符串中的\n是被转义成字面量时,才需要额外处理转换。
内容的提问来源于stack exchange,提问作者Tzn
相关产品推荐
相关产品推荐

