javascript - Google-diff-match 避免显示新行?

标签 javascript diff

我正在使用差异匹配 http://neil.fraser.name/software/diff_match_patch/svn/trunk/demos/demo_diff.html

显示 2 段 html 之间的差异。问题是脚本将新行显示为

有什么办法可以设置不显示吗?

现在我只是删除所有 \n\r 的实例,但这听起来不太好

最佳答案

正如您在文档中所见,pretty html 函数只是开发一些很酷的 ui 的示例。但是,如果您将函数中的 ¶ (& para;) 替换为 null,该符号将消失。

  diff_match_patch.prototype.diff_prettyHtml = function(diffs) {
    var html = [];
    var pattern_amp = /&/g;
    var pattern_lt = /</g;
    var pattern_gt = />/g;
    var pattern_para = /\n/g;
    for (var x = 0; x < diffs.length; x++) {
      var op = diffs[x][0];    // Operation (insert, delete, equal)
      var data = diffs[x][1];  // Text of change.
      //var text = data.replace(pattern_amp, '&amp;').replace(pattern_lt, '&lt;')
      //    .replace(pattern_gt, '&gt;').replace(pattern_para, '&para;<br>');
      var text = data.replace(pattern_amp, '&amp;').replace(pattern_lt, '&lt;')
          .replace(pattern_gt, '&gt;').replace(pattern_para, '<br>');
      switch (op) {
        case DIFF_INSERT:
          html[x] = '<ins style="background:#e6ffe6;">' + text + '</ins>';
          break;
        case DIFF_DELETE:
          html[x] = '<del style="background:#ffe6e6;">' + text + '</del>';
          break;
        case DIFF_EQUAL:
          html[x] = '<span>' + text + '</span>';
          break;
      }
    }
    return html.join('');
  };

要对此进行测试,只需转到您在 Chrome 中提供的链接,并在点击计算差异按钮之前在控制台复制粘贴上面的函数。

关于javascript - Google-diff-match 避免显示新行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13894514/

相关文章:

javascript - 如何在 javascript 和 php 中加密和解密 id

javascript - 如何测量 VBScript 或 JavaScript 中的代码执行时间?

linux - 使用 svn diff 命令

javascript - 如何有效地存储 html 差异

Git - 区分范围但忽略 merge

javascript - 模式在页面内容上重叠

服务器端的 Javascriptalert()

javascript - 模态形式消失而不点击形式

diff - 有什么方法可以在两个版本的IPython Notebook之间产生差异吗?

diff - 使用冲突标记拆分文件