将 pre 转换为 div
您将如何继续对此进行转换:
<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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
解析文本,获得文本行列表
修剪每一行
换行在
将结果连接在一起
我会在解析文本后完全删除预先存在的 pre 元素。因此,它不是“转换”,而是提取文本并完全构建一个不同的元素。
parse the text so you get a list of lines of text
trim each line
wrap each line in
<div><pre>
tagsconcatenate 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.
这对我来说就是这样。它可能会更好:
它不解决任何空白。您可以使用
keyDiv.html("key" + $.trim(lines[i]))
行中的 trim() 删除它That does it for me. It could be better:
It doesnt address any whitespace. You can remove it with trim() in the line
keyDiv.html("key" + $.trim(lines[i]))
您可以使用jQuery的wrap函数
You can use jQuery's wrap function