繁体   English   中英

如何将html正文部分的\\ n字符替换为<br>

[英]How to replace the \n characters in the body section of an html with <br>

我正在将html转换为包含一堆\\ n字符的字符串。

  "<html>\n  <head>\n    <style type=\"text/css\">\n      <!--\n        p { margin-top: 0; margin-bottom: 0 }\n      -->\n    </style>\n    \n  </head>\n  <body>\n    <p>\n      <b><font face=\"Arial\" size=\"4\"><i>Hello.....\n</i></font></b>    </p>\n    <p>\n  <b><font face=\"Arial\" size=\"4\"><i>Thanks, </i></font></b>\n    </p>\n    <p>\n      <b><i><font face=\"Arial\" size=\"4\">XXXX</font></i></b>\n    </p>\n  </body>\n</html>\n"

我想用break标记替换html正文部分中的所有\\ n字符。 为此,我正在使用以下正则表达式。

str.replaceAll("(?<!>)\n", "<br>")); 

因此,这将替换所有前面没有>的'\\n'字符。 但是在字符串中,html的开头部分中有!--\\n类的东西,它也将被替换。 我希望只对html正文部分的\\ n字符进行替换。 能做到吗?

如果不是正则表达式,是否可以让我了解如何解析字符串中的body标签,然后使用正则表达式替换该部分中的\\ n字符。

谢谢

您只需要分割字符串以分别获得头内容和主体内容,然后替换最后一个\\n所有内容,这是您应该做的:

 var str = "<html>\\n <head>\\n <style type=\\"text/css\\">\\n <!--\\np { margin-top: 0; margin-bottom: 0 }\\n -->\\n </style>\\n \\n </head>\\n <body>\\n <p>\\n <b><font face=\\"Arial\\" size=\\"4\\"><i>Hello.....\\n</i></font></b> </p>\\n <p>\\n <b><font face=\\"Arial\\" size=\\"4\\"><i>Thanks, </i></font></b>\\n </p>\\n <p>\\n <b><i><font face=\\"Arial\\" size=\\"4\\">XXXX</font></i></b>\\n </p>\\n </body>\\n</html>\\n"; function replaceNewLine(string) { if (str.indexOf("<body>") > 0) { var index = str.indexOf("<body>"); var heading = str.substring(0, index); var content = str.substring(index); return heading + content.replace(/\\n/g, "<br>"); } } alert(replaceNewLine(str)); 

  • 您将使用.indexOf().substring()函数获取正文部分。
  • 然后,您将使用带有replace()函数的Regex替换\\n

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM