如何更换某些回车换行符后跟一个带有车辆的仪表板?

时间:2012-05-09 15:45:09

标签: javascript jquery replace html-table linefeed

如何使用javascript或jQuery替换网页中TD元素内的文本中的序列ASCII 13 ASCII 10 - (CR LF DASH或/ r / n-)? stackoverflow和其他地方也存在类似的问题,但列出的解决方案不适用于此特定方案。传入的HTML是由我的客户遗留软件动态生成的,不会被更改,但它引用了我可以更改的javascript文件。下面给出了页面的缩短版本。实际页面包含0到20行数据,其中一些包含多行。我的用户在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 个答案:

答案 0 :(得分:11)

你的问题是你只关心在不同的行上显示它们,而不是专门关于替换\ r \ n。

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

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

See how the different white-space values work.

答案 1 :(得分:1)

这适用于您的具体情况:

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

不是寻找CRLF字符,而是使用任何空格,后跟短划线。如果您的内容中有空格,则它们也会添加br标记。

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

答案 2 :(得分:0)

你可以尝试

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

替换了换行符和回车符。

答案 3 :(得分:0)

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

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

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