【问题标题】:Issue when converting from HTML to text using javascript使用 javascript 从 HTML 转换为文本时出现问题
【发布时间】:2013-08-06 04:36:47
【问题描述】:

我有以下代码 sn-p 将 html 转换为 javascript,但是当绑定到 textarea 时,我似乎遇到了输出问题,我无法弄清楚问题可能是什么。

var html_to_text = $('#source').val().replace('&nbsp;', ' ').replace(/<[^>]*>/g, '').replace(/(<br>)+/g, '<br>');

在警报上显示时输出是正确的,但是当它被绑定到文本区域时,它上面有很多空白。有人可以帮我理解上面的 sn-p 可能是什么问题。

我在http://jsfiddle.net/technicaliti/uuxDx/ 有一个相同的工作示例

【问题讨论】:

  • 有什么问题?您的原始 HTML 中有很多空格(\n 和空格),并且您正在删除很多非空格。这留下了......很多空白。此外,您的第一个 .replace() 调用不使用正则表达式,因此它只会替换第一次出现的(不存在的)&amp;nbsp;
  • 它如何在警报上而不是在#destination 文本区域上显示正确的输出。我错过了什么吗?
  • 我在警报和文本区域中都看到了很多空白。
  • 需要在链上加 .replace(/\s{2,}/g, '\n\r') 吗?
  • $('#source').val().replace(/&lt;[^&gt;]*&gt;/g, '').replace(/\n/g, '');

标签: javascript html regex


【解决方案1】:

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

【讨论】:

  • 1>正确的顺序是\r\n 不是 \n\r 2>将空格,\r,\f 替换为换行符
  • 这个答案在不丢失格式和@Anirudh建议的改进的情况下正常工作。
【解决方案2】:

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

这个只删除了多个换行符(取自this answer),所以你仍然可以得到一个很好的格式

Demo fiddle

【讨论】:

    【解决方案3】:

    只需将换行符替换为空即可。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-20
      • 2020-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-07
      相关资源
      最近更新 更多