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

How to replace the characters in the body section of an html with <br>

本文关键字:替换 br 字符 html 正文部      更新时间:2023-09-26

我得到一个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>")); 

所以这是替换前面没有a>的所有''n'字符。但是在字符串中,在html的头部部分有一些类似!--'n的东西也被替换了。我希望替换只做在html的主体部分的'n字符。这能做到吗?

如果不是正则表达式,有人能给我一个想法,我应该如何在字符串中解析正文标签,然后使用正则表达式替换该部分的'n字符。

谢谢

你只需要分割字符串分别得到头部内容和正文内容,然后替换所有'n出现在最后一个,这是你应该做的:

var str = "<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";
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的出现。