【问题标题】:JavaScript multiline string decodeJavaScript 多行字符串解码
【发布时间】:2011-05-10 10:42:21
【问题描述】:

我有一个字符串:

<Grid><Description>LINE 1
LINE 2
LINE 3
LINE 4
</Description><</Grid>  

我需要用换行符对其进行解码。我找到了解决方案:

function decodeString(stringToDecode) {
    if (!stringToDecode) {
        return stringToDecode;
    }
    return $('<div />').html(stringToDecode).text();
}

但它会单行并用空格替换所有换行符。

【问题讨论】:

    标签: javascript string decode


    【解决方案1】:

    您可以使用以下内容将换行符替换为 &lt;br /&gt; 标记,然后设置 HTML:

    return $('<div />').html(stringToDecode.replace(/\n/, '&lt;br /&gt;')).text();
    

    【讨论】:

    • 我改进了您的解决方案:var tempTagName = 'LineBreak'; var decodedString = $('&lt;div /&gt;').html(stringToDecode.replace(/\n/g, '&amp;lt;' + tempTagName + "/&amp;gt;\r\n")).text(); return decodedString.replaceAll('&lt;' + tempTagName + '/&gt;', '\r\n');
    • 换行正则表达式应该是/(\r\n|\n|\r)/gmtextfixer.com/tutorials/javascript-line-breaks.php
    【解决方案2】:
    function decodeString(stringToDecode) {
        return stringToDecode ? $('<div />').html(stringToDecode.replace(/[\n\r]/g, "<br> \r\n")).text() : ""
    }
    

    【讨论】:

      【解决方案3】:

      您的示例有 CR/LF - 但这不是 HTML 中的换行符。您需要将其替换为有效的 HTML 换行符,即
      标签。

      您的函数有一个奇怪的 if 语句,它没有多大意义。当您刚刚证明它为空时,为什么要返回 stringToDecode?此外,$('&lt;div /&gt;').html(stringToDecode).text() 不会做任何有用的事情。

      试试这样的:

      function decodeString(stringToDecode) {
      if (!stringToDecode) {
          return "";
      }
      var regX = /\\n/g;
      var replaceString = '<br> \\n';
      return stringToDecode.replace(regX, replaceString);
      }
      

      【讨论】:

        猜你喜欢
        • 2011-08-18
        • 1970-01-01
        • 1970-01-01
        • 2013-06-15
        • 1970-01-01
        • 2019-08-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多