如何用 <br/> 替换某些回车换行符后跟破折号

How can I replace certain carriage return line feed followed by a dash with a <br/>?

本文关键字:回车 换行符 破折号 何用 br 替换      更新时间:2023-09-26

如何使用javascript或jQuery替换网页TD元素内文本中的序列ASCII 13 ASCII 10 - (CR LF DASH 或/r/n-(?在stackoverflow和其他地方也有类似的问题,但列出的解决方案不适用于此特定场景。传入的 HTML 是由我的客户的旧软件动态生成的,该软件不会更改,但它引用了一个我可以更改的 javascript 文件。下面给出了该页面的缩短版本。实际页面包含零到二十行数据,其中一些包含多行。我的用户使用的是 Internet Explorer 8,以下两行都不起作用。我试过只更换回车符和换行符。我已经从javascript和jQuery中尝试过这个,没有任何可见的效果。当我从 Internet Explorer 8 保存页面并在十六进制编辑器中查看它时,回车符和换行符存在于客户端中。问题的症结是将文本中的/n 暴露给 JavaScript。

我想执行此替换,因为我希望每当序列/r/n- 存在于元素的页面中时,两行文本就会出现在显示的输出中。

请注意,我已经包含了两个版本的替换,一个jQuery和一个JavaScript。 我想要它做的事情也没有。

   <html>
    <head>
    <title>Page Testing </title>
    <script src="js/jquery-1.7.2.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $('td').each(function () {
                $this = $(this);
                $this.html($this.html().replace(/'r'n'-/g, "<br/>-"));
                this.innerHTML = (this.innerHTML.replace(/'r'n'-/g, "<br/>-"));
            });
        });
    </script>
    </head>
    <body>
    <table>
    <tbody>
    <tr>
     <td>-First Content
    -Second Line of Content</td>
    <td>-How I want it to look<br/>-After the transformation</td>
    </tr>
    </tbody>
    </table>
    </body>
    </html>

您的问题说您只关心在单独的行上显示它们,而不是专门考虑替换 ''r'。

你可以考虑用css来解决这个问题。

<style>
    tr {
        white-space:pre-line;
    }
</style>

了解不同的空格值的工作原理。

这适用于您的具体情况:

$this.html($this.html().replace(/'s+'-/g, "<br /> -"));

它不是查找 CRLF 字符,而是需要任何空格,后跟破折号。如果内容中有空格后面的破折号,它们也会添加 br 标签。

IE 8 在换行符方面有一些奇怪的行为。如果我得到解释,我会更新这个。

您只是替换 '-,但您指出您尝试替换的字符序列是 ''r'-

尝试将 ''r 放入替换表达式中。

''r 字符虽然不是通常支持的 Windows/Linux 换行符,但在试图迎合每个人的浏览器/源查看器中通常仍显示为换行符。

你可以试试

$this.html().replace(/['n'r]+'-/g, "<br/>-")

替换换行符和回车符。