Est-il un rubis de la bibliothèque qui va prendre deux chaînes ou les deux tableaux, et de retour à la différence entre les deux chaînes/tableaux?
Réponses
Trop de publicités?Pour les tableaux, utiliser le moins de l'opérateur. Par exemple:
>> foo = [1, 2, 3]
=> [1, 2, 3]
>> goo = [2, 3, 4]
=> [2, 3, 4]
>> foo - goo
=> [1]
Voici la dernière ligne supprime tous les éléments de foo qui est aussi dans goo, laissant juste l'élément 1. Je ne sais pas comment faire pour les deux chaînes, mais jusqu'à ce que quelqu'un qui sait posts à ce sujet, vous pourriez convertir chaque chaîne d'un tableau, utiliser le moins de l'opérateur, et puis convertir le résultat en retour.
Je suis frustré par le manque d'une bonne bibliothèque pour ce en ruby, j'ai donc écrit http://github.com/samg/diffy. Il utilise diff
sous les couvertures, et met l'accent sur la pratique, et de fournir assez d'options de sortie.
diff.rb est ce que vous voulez, qui est disponible sur http://users.cybercity.dk/~dsl8950/ruby/diff.html
Pour les cordes, je voudrais essayer d'abord le Ruby Gem @sam-safran mentionnés ci-dessous. Il est plus facile à installer: http://github.com/pvande/differ/tree/master
gem install differ
irb
require 'differ'
one = "one two three"
two = "one two 3"
Differ.format = :color
puts Differ.diff_by_word(one, two).to_s
Differ.format = :html
puts Differ.diff_by_word(one, two).to_s