2010-05-12 90 views

回答

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

對於今天有人在尋找答案:https://github.com/samg/diffy是最安全的選擇。正如這裏提到的其他寶石和圖書館自一段時間以來已被拋棄。

+0

是,diffy聽起來前途 – Saim 2015-12-03 17:04:44

0

有兩種方式:

1.works也非英文字符串

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