有没有办法打印(使用console.log)javascript模板字符串,在这种情况下应用替换,但在打印时考虑换行符'\ n'?
例如,当我有以下内容时:
let someVar = 'a';
let tsString = `here goes ${someVar}
some other line
some other line`;
console.log(tsString);
我希望用换行符打印,而不是打印\ n而不是。
我认为模板字符串和常规字符串之间可能存在一些转换,但我找不到它。
***编辑:它发生在终端上,而不是浏览器上。运行NodeJS应用程序。很抱歉没有指定,我认为我想要的是JS特定的,而不是节点(至少是解决方案)。
答案 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
(这是标准解决方案)之外,另一个解决方案如下:
您已经有一个换行符:
(我无法在此字符处粘贴该字符,因为降价会杀死它)
您可以将其捕获到变量中并将其插入模板字符串中:
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