如何在Ruby中對兩個字符串或數組進行比較?比較ruby字符串或數組
回答
diff.rb是你想要的,它通過互聯網檔案館可在http://users.cybercity.dk/~dsl8950/ruby/diff.html:
http://web.archive.org/web/20140421214841/http://users.cybercity.dk:80/~dsl8950/ruby/diff.html
注意:diff.rb是GPL – 2009-07-31 04:36:57
對於那些不贊同GPL的含義:它包括'copyleft'概念這要求您將任何專有代碼合併到一起,迫使您開源和GPL-泄露您以前的專有代碼。 – 2014-04-25 15:21:27
鏈接(http://users.cybercity.dk/~dsl8950/ruby/diff.html)已死 – 2017-02-21 07:15:12
對於數組,使用減號操作。例如:
>> foo = [1, 2, 3]
=> [1, 2, 3]
>> goo = [2, 3, 4]
=> [2, 3, 4]
>> foo - goo
=> [1]
這裏的最後一行除去從富的一切,也是咕,只留下元素1.我不知道如何爲兩個字符串做到這一點,但直到有人誰知道帖子它可以將每個字符串轉換爲一個數組,使用minus運算符,然後將結果轉換回來。
這是不正確的。 富= [1,2,3] 欄= [4,5,6] 富 - 巴#=> [1,2,3] Ruby的實現是正確的,但我不薄,這是什麼問題要求。 – 2010-08-24 06:59:35
對於字符串,我會首先嚐試下面提到的@sam-saffron的Ruby Gem。它易於安裝: 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
還有diff-lcs
它可作爲寶石。
自2004年以來它並未更新,但
我們一直在使用它,沒有任何問題。
編輯: 2011年發佈了一個新版本。看起來它回到了積極的發展階段。
的HTMLDiff是@ DA01上面提到的爲我工作。
script/plugin install git://github.com/myobie/htmldiff.git
# bottom of environment.rb
require 'htmldiff'
# in model
class Page < ActiveRecord::Base
extend HTMLDiff
end
# in view
<h1>Revisions for <%= @page.name %></h1>
<ul>
<% @page.revisions.each do |revision| %>
<li>
<b>Revised <%= distance_of_time_in_words_to_now revision.created_at %> ago</b><BR>
<%= Page.diff(
revision.changes['description'][0],
revision.changes['description'][1]
) %>
<BR><BR>
</li>
<% end %>
# in style.css
ins.diffmod, ins.diffins { background: #d4fdd5; text-decoration: none; }
del.diffmod, del.diffdel { color: #ff9999; }
看起來不錯。順便說一句,我用這個acts_as_audited
插件。
我有同樣的疑問,我發現的解決方案不是100%的紅寶石,但對我來說是最好的。 diff.rb的問題是它沒有一個漂亮的格式化程序,以人性化的方式顯示差異。所以我用DIFF從操作系統與此代碼:
def diff str1, str2
system "diff #{file_for str1} #{file_for str2}"
end
private
def file_for text
exp = Tempfile.new("bk", "/tmp").open
exp.write(text)
exp.close
exp.path
end
我很沮喪與缺乏紅寶石好的庫這個的,所以我寫了http://github.com/samg/diffy。它使用下面的diff
,並側重於方便,並提供漂亮的輸出選項。
也許Array.diff通過猴子補丁幫助...
http://grosser.it/2011/07/07/ruby-array-diffother-difference-between-2-arrays/
不僅僅是Windows人民的利益:diffy看起來輝煌,但我相信它只會在* nix(是否正確我的工作我錯了)。當然,它在我的機器上不起作用。
Differ爲我工作(Windows 7 x64,Ruby 1.8.7)。
要獲取字符的決議角色,我添加了一個新功能,damerau-levenshtein gem
require "damerau-levenshtein"
differ = DamerauLevenshtein::Differ.new
differ.run "Something", "Smothing"
# returns ["S<ins>o</ins>m<subst>e</subst>thing",
# "S<del>o</del>m<subst>o</subst>thing"]
或解析:
require "damerau-levenshtein"
require "nokogiri"
differ = DamerauLevenshtein::Differ.new
res = differ.run("Something", "Smothing!")
nodes = Nokogiri::XML("<root>#{res.first}</root>")
markup = nodes.root.children.map do |n|
case n.name
when "text"
n.text
when "del"
"~~#{n.children.first.text}~~"
when "ins"
"*#{n.children.first.text}*"
when "subst"
"**#{n.children.first.text}**"
end
end.join("")
puts markup
- 1. 比較字符串數組
- 2. PHP比較字符串數組串
- 3. 比較兩組字符串
- 4. 比較對象,數字,字符串或數組
- 5. 學習Ruby - 卡在數組中的字符串比較
- 6. ruby keep_if數組與字符串的比較
- 7. 比較字符串的二維數組
- 8. 比較字符串與數組
- 9. 多字符串數組比較
- 10. 數組鍵比較隨着串字符
- 11. 比較數組列表與字符串
- 12. 比較字符串數組在JAVA
- 13. 比較字符串和數組C#
- 14. 比較字符串二維數組
- 15. 比較字符串數組輸出Null
- 16. 比較一個字符串數組PHP
- 17. C字符串數組比較
- 18. 比較字符串數組元素?
- 19. 比較edittext輸入字符串數組
- 20. C++中的數組字符串比較
- 21. C#比較兩個字符串數組
- 22. 比較字符串和數組C++
- 23. XML字符串/數組比較
- 24. 比較字符串數組xml
- 25. Android的 - 比較字符串數組
- 26. qsort字符串數組,比較
- 27. 比較數組匹配的字符串
- 28. 基於字符串比較的數組交集基於字符串比較
- 29. 比較字符串或字節數組的速度更快嗎?
- 30. ruby隨機字符串比較方法
我已經改寫,希望現在可以重新打開了這個問題。我認爲這個問題是有效的,只是措辭使它聽起來像會導致很多意見的答案。如果你想幫助重新打開它,你應該在「ruby」和「diff」問題標籤下看到一個小小的「重新打開」鏈接。 – Gerry 2016-06-30 23:38:33
這是關於本週發現的第10個問題,已被標記爲脫離主題。它不是脫離主題。這是一個很好的問題。請大廳監視器,停止這樣做。 – user1130176 2017-02-16 11:34:03
對於字符串,你可以使用這個答案 http://stackoverflow.com/a/42573286/745489 – Dzmitry 2017-03-03 07:44:06