【问题标题】:carriage return encoding回车编码
【发布时间】:2013-03-17 18:46:43
【问题描述】:

通过对数据库的查询,我正在检索之前通过 HTML textareainput 插入的此类数据。当我从我的数据库中得到响应时,JSON 对象中的text 字段如下所示:

  obj :  {
           text :  [some_text] ↵ [some_text]
         }

我试图用这个function 替换:

 string_convert = function(string){
  return string.replace("&#8629",'<br>')
               .replace('&crarr','<br>')
               .replace('/[\n\r]/g','<br>');
 }

我必须在 HTML 中显示这个字符串,但它似乎不起作用。我正在使用UTF-8

有什么建议吗?

【问题讨论】:

  • 什么是“↵”?请出示真实的 JSON。
  • 你试过string.replace('↵', '&lt;br&gt;')吗?
  • ↵ 是它实际显示的字符。

标签: javascript html encode


【解决方案1】:

您遇到的问题是您将正则表达式括在引号中。这是不正确的。

.replace('/[\n\r]/g','<br>');
         ^         ^
       remove these two quotes

引号是不必要的,因为正则表达式已经被斜线分隔。

通过在其中添加引号,您实际上已经告诉它您要替换固定字符串而不是正则表达式。固定字符串可能看起来像一个表达式,但加上引号后,它只会被视为普通字符串。

删除引号,它将被视为一个表达式,它会正常工作。

还有一件事——为了让你的正则表达式完美运行,我还建议稍微修改一下。就目前而言,它只会用&lt;br&gt; 替换所有\n\r 字符。但在某些情况下,它们可能会以\r\n 对的形式组合在一起。这应该是一个换行符,但您的表达式会将其替换为两个 &lt;br&gt;s。

你可以改用这样的表达式:

/\r\n|\n|\r/g

希望对您有所帮助。

【讨论】:

    【解决方案2】:

    您的代码中缺少结尾分号 ;

    string_convert = function(aString){
      return aString.replace("&#8629;",'<br>').replace('&crarr;','<br>');
    }
    

    这不一定能解决您的问题,但很有可能。

    【讨论】:

      【解决方案3】:

      发件人:Trying to translate a carriage return into a
      html tag in Javascript?

      text = text.replace(/(\r\n|\n|\r)/g,"<br />");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-15
        • 1970-01-01
        • 2011-09-10
        相关资源
        最近更新 更多