使用换行符打印Javascript模板字符串

时间:2018-03-23 18:46:56

标签: javascript node.js debugging template-strings

有没有办法打印(使用console.log)javascript模板字符串,在这种情况下应用替换,但在打印时考虑换行符'\ n'?

例如,当我有以下内容时:

let someVar = 'a';

let tsString = `here goes ${someVar} 
some other line
some other line`;

console.log(tsString);

我希望用换行符打印,而不是打印\ n而不是。

我认为模板字符串和常规字符串之间可能存在一些转换,但我找不到它。

***编辑:它发生在终端上,而不是浏览器上。运行NodeJS应用程序。很抱歉没有指定,我认为我想要的是JS特定的,而不是节点(至少是解决方案)。

4 个答案:

答案 0 :(得分:5)

我认为这可能与您使用的操作系统有关,因为Windows和Mac的行尾都有不同的字符长度。

回答似乎对我有用的特定问题。

const os = require('os');

let someVar = 'a';

let tsString = `here goes ${someVar} ${os.EOL} some other line ${os.EOL} some other line`;

console.log(tsString);

您可以在https://nodejs.org/api/os.html#os_os_eol

上阅读有关nodejs文档的os中间件的信息。

这似乎与How do I create a line break in a JavaScript string to feed to NodeJS to write to a text file?

类似

答案 1 :(得分:2)

除了添加到字符串\n(这是标准解决方案)之外,另一个解决方案如下:

您已经有一个换行符:

chrome's console with original source

(我无法在此字符处粘贴该字符,因为降价会杀死它)

您可以将其捕获到变量中并将其插入模板字符串中:

const newline = tsString[12];
const myString = `Hello ${newline} World!`;

希望有帮助。

答案 2 :(得分:2)

您应该尝试根据所取内容的位置替换EOL,作为标准的表单应支持规范(https://www.w3.org/TR/html401/interact/forms.html#h-17.13.4)的CRLF \r\n

使用以下正则表达式替换所有出现的情况。 \n将匹配EOL,而/gm将匹配所有

let someVar = 'a';

let tsString = `here goes ${someVar} 
some other line
some other line`;

//For terminal (detects EOL on it's own)
console.log(tsString);
let txtString = tsString.replace(/\n/gm, `\r\n`);
// Works in terminal and in textarea
console.log(txtString); 
//For html content, redundant but if it's just html you want!
let htmlString = tsString.replace(/\n/gm, `<br>`);
console.log(htmlString);

答案 3 :(得分:0)

您可以将数据嵌入字符串之内,例如

const myTemplateString = My sample text 1 is ${one} My second line 2 is ${two}

console.log(myTemplateString) ES6将保留空格,因此您可以获取所需的换行符。 refer this article