使用JavaScript将HTML转换为文本时出现问题

3
我有以下代码片段,用于将HTML转换为JavaScript,但是当它绑定到文本区域时,输出似乎存在问题,我无法确定问题可能是什么。
var html_to_text = $('#source').val().replace('&nbsp;', ' ').replace(/<[^>]*>/g, '').replace(/(<br>)+/g, '<br>');

当在alert中显示时,输出是正确的,但是当绑定到文本区域时,会有很多空白空间。是否有人能帮我理解以上片段可能存在的问题。

我有一个工作样例,在http://jsfiddle.net/technicaliti/uuxDx/中。


1
什么问题?您的原始HTML中有很多空格(\n和空格),而您正在删除许多非空格内容。这会留下很多空格。此外,您的第一个.replace()调用没有使用正则表达式,因此它只会替换第一次出现的(不存在的)&nbsp; - Ian
它是如何在警报上显示正确的输出而不是在#destination文本区域上显示的?我有什么遗漏吗? - Abishek
我在警告框和文本区域中看到了很多空格。 - Ian
你需要在链中添加.replace(/\s{2,}/g, '\n\r')吗? - SaganRitual
1
$('#source').val().replace(/<[^>]*>/g, '').replace(/\n/g, ''); - user2587132
@rps,这仍然保留了  。@Ian,我已经将 nbsp; 替换为 .replace(/[&]nbsp[;]/gi," ")。希望这样可以。 - Abishek
3个回答

0

Just replace the line break with nothing.

        html_to_text = html_to_text.replace(/\n/g, ''); 


0
添加.replace(/\s{2,}/g, '\n\r')到末尾。

2
1> 正确的顺序是\r\n,而不是\n\r。 2> 这将把空格、\r\f替换为换行符。 - Anirudha
这个答案在不失格式的情况下,以及根据@Anirudh提出的改进建议,能够正确地工作。 - Abishek

0

.replace(/\r?\n|\r/g,"");

这个代码只会移除多余的换行符(来自这个答案),所以你仍然可以得到一个漂亮的格式。

演示 fiddle


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接