3

如何使用 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>
4

4 回答 4

11

您的问题是说您只关心在单独的行上显示它们,而不是特别关心替换 \r\n。

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

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

看看不同的空白值是如何工作的。

于 2012-05-09T23:28:38.993 回答
1

这适用于您的特定情况:

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

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

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

于 2012-05-09T18:56:09.213 回答
0

你可以试试

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

它替换了换行符和回车符。

于 2012-05-09T15:48:37.677 回答
0

你只是替换\n-,但你说你试图替换的字符序列是\r\n-

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

\r 字符虽然不是通常支持的 windows/linux 换行符,但通常仍会在试图迎合所有人的浏览器/源查看器中显示为换行符。

于 2012-05-09T15:52:58.953 回答