57 votes

diff un rubis chaîne ou un tableau

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?

35voto

Chris Bunch Points 25857

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.

24voto

samg Points 1900

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.

21voto

Brian Mitchell Points 1881

diff.rb est ce que vous voulez, qui est disponible sur http://users.cybercity.dk/~dsl8950/ruby/diff.html

21voto

da01 Points 321

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

5voto

nertzy Points 2310

Il est également diff-lcs qui est disponible comme un bijou. Il n'a pas été mis à jour depuis 2004, mais nous avons pu l'utiliser sans aucun problème.

Edit: Une nouvelle version a été publiée en 2011. On dirait qu'il est de retour en développement actif.

http://rubygems.org/gems/diff-lcs

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X