0

通过对数据库的查询,我正在检索以前通过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

有什么建议吗?

4

3 回答 3

1

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

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

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

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

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

不过,还有一件事——为了让你的正则表达式完美地工作,我还建议稍微修改一下。就目前而言,它只会用 . 替换所有\n\r字符<br>。但在某些情况下,它们可能会\r\n成对出现。这应该是一个换行符,但您的表达式将用两个<br>s 替换它。

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

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

希望有帮助。

于 2013-03-17T19:13:37.323 回答
0

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

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

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

于 2013-03-17T18:55:49.907 回答
0

来自:试图将回车翻译成
Javascript 中的 html 标记?

text = text.replace(/(\r\n|\n|\r)/g,"<br />");
于 2013-03-17T18:56:00.953 回答