将 pre 转换为 div

发布于 2024-11-18 23:40:47 字数 996 浏览 5 评论 0原文

您将如何继续对此进行转换:

<pre>
key 1 value 1

key 2 value 2
value 2.2


key 3 value 3
value 3.1
value 3.2
value 3.3

key 4 value4.1 value4.5

</pre>

对此:

<div><pre>
key 1 value 1
</pre></div><div><pre>
key 2 value 2
value 2.2
</pre></div><div><pre>
key 3 value 3
value 3.1
value 3.2
value 3.3
</pre></div><div><pre>
key 4 value4.1 value4.5

</pre></div>

即:将连续空行*s*(可能包含空格/制表符和多个换行符)替换为< /pre>

我尝试过:

var txt = $('pre').text();
txt = txt.replace(/(\r\n|\n|\r)/gm, "</pre></div><div><pre>");
$('div#test').append(txt);

部分工作:每行都更改了,我失去了块。

 换行符是否存储为 \r ? \n? (所有操作系统?所有浏览器?)
什么是一个好的正则表达式来做到这一点?
您建议我继续采用其他方式吗?

How would you proceed to transform this :

<pre>
key 1 value 1

key 2 value 2
value 2.2


key 3 value 3
value 3.1
value 3.2
value 3.3

key 4 value4.1 value4.5

</pre>

To this :

<div><pre>
key 1 value 1
</pre></div><div><pre>
key 2 value 2
value 2.2
</pre></div><div><pre>
key 3 value 3
value 3.1
value 3.2
value 3.3
</pre></div><div><pre>
key 4 value4.1 value4.5

</pre></div>

Namely : remplacing continuous blank line*s* (could contains space/tabs and multiples linefeed) to </pre></div><div><pre>

I tried :

var txt = $('pre').text();
txt = txt.replace(/(\r\n|\n|\r)/gm, "</pre></div><div><pre>");
$('div#test').append(txt);

Partially work : each line are changed, I loose my blocks.

Are <pre> line break stocked as \r ? \n ? (all OS? all browsers?)
What would be a good regex to do this?
Any other way you would suggest me to proceed with?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

烟酉 2024-11-25 23:40:47
  1. 解析文本,获得文本行列表

  2. 修剪每一行

  3. 换行在

    标签

  4. 将结果连接在一起

我会在解析文本后完全删除预先存在的 pre 元素。因此,它不是“转换”,而是提取文本并完全构建一个不同的元素。

  1. parse the text so you get a list of lines of text

  2. trim each line

  3. wrap each line in <div><pre> tags

  4. concatenate the results together

I would do a remove of the prexisting pre element altogether after parsing out the text. So instead of "transforming" it just extract the text and build a different element altogether.

倾城泪 2024-11-25 23:40:47

这对我来说就是这样。它可能会更好:

$(document).ready(function(){

var lines = $('pre').html().split(/\n\s*\n/);
$('pre').remove();
    for(i = 0; i < lines.length; i++){
        if($.trim(lines[i].length) > 0){
            var preDiv = $('<pre />');
            var keyDiv = $('<div />');
            preDiv.append(keyDiv);
            keyDiv.html(lines[i]);
            $('body').append(preDiv);
        }
    }

});

它不解决任何空白。您可以使用 keyDiv.html("key" + $.trim(lines[i])) 行中的 trim() 删除它

That does it for me. It could be better:

$(document).ready(function(){

var lines = $('pre').html().split(/\n\s*\n/);
$('pre').remove();
    for(i = 0; i < lines.length; i++){
        if($.trim(lines[i].length) > 0){
            var preDiv = $('<pre />');
            var keyDiv = $('<div />');
            preDiv.append(keyDiv);
            keyDiv.html(lines[i]);
            $('body').append(preDiv);
        }
    }

});

It doesnt address any whitespace. You can remove it with trim() in the line keyDiv.html("key" + $.trim(lines[i]))

給妳壹絲溫柔 2024-11-25 23:40:47

您可以使用jQuery的wrap函数

$('pre').text($.trim($(this).text()).wrap('<div></div>');

You can use jQuery's wrap function

$('pre').text($.trim($(this).text()).wrap('<div></div>');
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文