Javascript 将pre转换为div

Javascript 将pre转换为div,javascript,jquery,html,regex,pre,Javascript,Jquery,Html,Regex,Pre,您将如何着手改变这一点: <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> 键1值1 键2值2 价值2.2 键3值3 价值3.1 价值3.2 价值3.3 键4值4.1值4.5 为此: var txt = $('pre').text(); txt = txt.replace

您将如何着手改变这一点:

<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>

键1值1
键2值2
价值2.2
键3值3
价值3.1
价值3.2
价值3.3
键4值4.1值4.5
为此:

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

键1值1
键2值2
价值2.2
键3值3
价值3.1
价值3.2
价值3.3
键4值4.1值4.5
即:将连续空行*s*(可能包含空格/制表符和多个换行符)重新放置到

我试过:

var txt=$('pre').text();
txt=txt.replace(/(\r\n |\n |\r)/gm,“”);
$('div#test').append(txt);
部分工作:每一行都改变了,我松开了我的积木

断线是否作为\r\n库存\N(所有操作系统?所有浏览器?)
什么样的正则表达式可以做到这一点?
你有没有其他办法建议我继续

  • 解析文本,以便获得文本行列表

  • 修剪每一行

  • 标记将每行包装起来

  • 将结果连接在一起

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

  • 解析文本,以便获得文本行列表

  • 修剪每一行

  • 标记将每行包装起来

  • 将结果连接在一起

  • 在解析文本之后,我将完全删除先前存在的pre元素。因此,它不需要“转换”,只需提取文本并构建一个不同的元素即可。

    您可以使用函数

    $('pre').text($.trim($(this).text()).wrap(“”);
    您可以使用函数


    $('pre').text($.trim($(this.text()).wrap(“”);
    这对我来说是个好办法。它可能更好:

    $(文档).ready(函数(){
    变量行=$('pre').html().split(/\n\s*\n/);
    $('pre').remove();
    对于(i=0;i0){
    var-preDiv=$('');
    var keyDiv=$('');
    preDiv.append(keyDiv);
    html(第[i]行);
    $('body')。追加(preDiv);
    }
    }
    });
    

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

    这样做对我来说更好:

    $(文档).ready(函数(){
    变量行=$('pre').html().split(/\n\s*\n/);
    $('pre').remove();
    对于(i=0;i0){
    var-preDiv=$('');
    var keyDiv=$('');
    preDiv.append(keyDiv);
    html(第[i]行);
    $('body')。追加(preDiv);
    }
    }
    });
    

    它不处理任何空白。您可以使用行
    keyDiv.html(“key”+$.trim(行[i])中的trim()删除它

    您要转换为的HTML无效。键1值1不正确。已修复。2 ups?有些人非常纯粹:|您要转换为的HTML无效。键1值1不正确。已修复。2 ups?有些人非常纯粹:|这并不能实现他想要做的。这不会实现他想要的。他想包装每个part使用
    而不仅仅是整个东西。这会用div来包装每个
    ?你还想做什么?这不会达到他想要做的。那不会做他想要做的。他想用
    来包装每个部分,而不仅仅是整个东西。这会用div来包装每个
    。你还想做什么“密钥1值1”只是样本数据。它可能是任何东西(不一致)。除非空行是空的(没有空格),否则它是无效的。参见目前为止最好的答案。“密钥1值1”只是样本数据。它可能是任何东西(不一致)。除非空行为空,否则它不起作用。(无空格),请参阅。不过是目前为止最好的答案。@Kraz:不,我的算法与您尝试的算法不同。您实际上是在用HTML标记替换空格,而我的算法会使实现更干净。我现在没有时间为您实现它。抱歉。@Kraz:不,我的算法与您尝试的算法不同。您实际上是在重放用HTML标记填充空格,而我的会得到更干净的实现。我现在没有时间为您实现它。对不起。
    var txt = $('pre').text();
    txt = txt.replace(/(\r\n|\n|\r)/gm, "</pre></div><div><pre>");
    $('div#test').append(txt);
    
    $('pre').text($.trim($(this).text()).wrap('<div></div>');
    $(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);
            }
        }
    
    });