7

有没有办法打印(使用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

4 回答 4

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);

您可以os在此处阅读有关 nodejs 文档的中间件:https ://nodejs.org/api/os.html#os_os_eol

这似乎与以下内容类似:如何在 JavaScript 字符串中创建换行符以提供给 NodeJS 以写入文本文件?

于 2020-02-18T16:23:43.677 回答
2

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

使用以下正则表达式替换所有出现。\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);

于 2020-02-20T03:52:44.153 回答
2

除了添加到字符串之外的另一种解决方案\n,即标准解决方案如下:

你有一个换行符:

带有原始源代码的 chrome 控制台

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

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

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

希望能帮助到你。

于 2020-02-18T16:13:16.223 回答
0

您可以将数据嵌入到字符串中,例如

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

console.log(myTemplateString)ES6保留空格,因此您可以获得所需的换行符。 参考这篇文章

于 2020-02-24T19:42:53.110 回答