【问题标题】:Printing Javascript Template Strings with Line Breaks使用换行符打印 Javascript 模板字符串
【发布时间】:2018-09-02 12:51:20
【问题描述】:

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

例如,当我有以下情况时:

let someVar = 'a';

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

console.log(tsString);

我希望它打印带有换行符,而不是打印 \n。

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

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

【问题讨论】:

  • 我的控制台中没有\ns,还是要\ns?
  • 由于 HTML 解析器解析字符串的方式,所有不必要的空格都被删除(意味着换行符)。这仅仅是控制台的烦恼吗?
  • @RandyCasburn 因为这个问题专门指的是console.log,所以这应该不是问题。
  • @H.B. - 我明白了,但你永远不知道。如果这是控制台的烦恼,那么即使在这里也是浪费时间。但是,如果在 HTML 视图中呈现的内容与在控制台中呈现的内容之间存在误解,也许我们可以提供帮助。有意义吗?
  • @RandyCasburn:是的。想知道正在使用什么浏览器...

标签: javascript node.js debugging template-strings


【解决方案1】:

我认为这可能与您使用的操作系统有关,因为 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);

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

这似乎与以下内容类似:How do I create a line break in a JavaScript string to feed to NodeJS to write to a text file?

【讨论】:

    【解决方案2】:

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

    你有一个换行符:

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

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

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

    希望对你有帮助。

    【讨论】:

      【解决方案3】:

      您应该尝试根据您获取内容的位置替换 EOL,作为标准的表单应该支持 CRLF \r\n 根据规范 (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);

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-09-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多