是否有一种简单的方法可以做到这一点 - 创建标记文本,显示两段文本之间的变化。可能是一个内置助手?看着但找不到!
答案 0 :(得分:6)
您可以使用jsdifflib(http://snowtide.com/jsdifflib)之类的东西在javascript中完成客户端。
答案 1 :(得分:5)
http://github.com/pvande/differ 你可以使用它,它对字符串执行diff。您必须构建一些逻辑以将其格式化为输出就绪状态。可能在帮助器中使用Builder :: XmlMarkup。
还有: http://github.com/myobie/htmldiff
这似乎输出了标记 - 但它没有很好地记录。
就内置助手而言,我认为Rails没有任何内置功能。 有http://api.rubyonrails.org/classes/ActiveSupport/CoreExtensions/Hash/Diff.html - 但与第一个插件不同,它用于哈希,而不是字符串。
答案 2 :(得分:2)
对于今天寻找答案的人来说:https://github.com/samg/diffy是最安全的选择。由于此处提到的其他宝石和图书馆已经放弃了一段时间。
答案 3 :(得分:0)
有两种方法:
1.也适用于非英语字符串
class String
def -(other)
s1 = self.mb_chars.downcase.chars
s2 = other.mb_chars.downcase.chars
s1.size >= s2.size ? s1 - s2 : s2 - s1
end
end
> 'abcde' - 'abc'
=> ["d", "e"]
> 'abc' - 'ac'
=> ["b"]
2。 来自http://tobyho.com/2011/03/26/string-difference-in-ruby/
class String
def -(other)
self.index(other) == 0 ? self[other.size..self.size] : nil
end
end
> 'abcde' - 'abc'
=> "de"
but
> 'abc' - 'ac'
=> nil