0

我有两个 HTML 页面,我想比较它们的源代码。我已将页面源转换为字符串,我需要知道比较两个大字符串的最佳方法是什么。

  • 我应该使用正常的比较方法,例如,page1.eql?(page2)
  • 是否str.eql?(str1)也比较符号,例如,@

我真的很高兴知道比较的最佳方法。

4

4 回答 4

1

我不确定您希望比较的详细程度。如果您想要“类似差异”的功能,您可以查看之前提出的类似问题:diff a ruby​​ string or array

于 2012-11-14T14:32:24.833 回答
1

这是打印字符串之间差异的 levenshtein 方法,我不确定这是否是您正在寻找的。否则我建议只使用 page1.eql?(page2)

def levenshtein(a, b)
  case
    when a.empty? then b.length
    when b.empty? then a.length
    else [(a[0] == b[0] ? 0 : 1) + levenshtein(a[1..-1], b[1..-1]),
          1 + levenshtein(a[1..-1], b),
          1 + levenshtein(a, b[1..-1])].min
  end
end
于 2012-11-14T14:36:27.750 回答
0

查看loofahgem(github 链接)。它在语义上区分 HTML(和 XML)子树,这意味着忽略无意义的空格,忽略属性的顺序等。

于 2012-11-15T22:23:08.307 回答
0

尝试使用http://prettydiff.com/?lang=html

Pretty Diff 将去除注释和无意义的空白,以便进行最准确的比较。它还提供了用于微调不同类型的误报条件的高级选项。

于 2012-11-17T04:39:36.863 回答