रूबी में दो स्ट्रिंग्स या सरणी का अंतर कैसे बना सकता हूं?एक रूबी स्ट्रिंग या सरणी
उत्तर
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 जीपीएल –
उन लोगों के लिए है जो जीपीएल के प्रभाव को कम नहीं करते हैं: इसमें 'कॉपी बाएं' अवधारणा शामिल है जो मांग करता है कि आप किसी भी स्वामित्व कोड को स्रोत में खोलने के लिए मजबूर कर दें और जीपीएल-अपने पूर्व-स्वामित्व कोड को छोड़ दें। –
लिंक (http://users.cybercity.dk/~dsl8950/ruby/diff.html) मृत –
सरणियों के लिए, माइनस ऑपरेटर का उपयोग करें। उदाहरण के लिए:
>> foo = [1, 2, 3]
=> [1, 2, 3]
>> goo = [2, 3, 4]
=> [2, 3, 4]
>> foo - goo
=> [1]
यहाँ अंतिम पंक्ति foo से सब कुछ goo में भी है कि, मैं कैसे दो स्ट्रिंग्स के लिए यह करने के लिए पता नहीं है बस तत्व 1. छोड़ने निकालता है, लेकिन कोई ऐसा जो के बारे में पोस्ट जानता है जब तक यह, आप बस प्रत्येक स्ट्रिंग को सरणी में परिवर्तित कर सकते हैं, माइनस ऑपरेटर का उपयोग कर सकते हैं और फिर परिणाम को वापस परिवर्तित कर सकते हैं।
यह गलत है। foo = [1,2,3] बार = [4,5,6] foo - बार # => [1,2,3] रूबी के कार्यान्वयन सही है, लेकिन मैं पतली नहीं है यह है सवाल क्या पूछा गया। –
क्रिस एल के बिंदु के आसपास जाने के लिए, आप (foo - bar) + (बार - foo) कर सकते हैं। सरणी के बीच सभी अंतर प्राप्त करने के लिए (या स्ट्रिंग्स यदि आप .to_a का उपयोग करते हैं) – diedthreetimes
तारों के लिए, मैं सबसे पहले रूबी जेम को आजमाऊंगा जो @ सैम-केसर नीचे उल्लिखित है। यह स्थापित करने के लिए आसान है: 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 में एक नया संस्करण जारी किया गया था। ऐसा लगता है कि यह सक्रिय विकास में वापस आ गया है।
2011 में एक नया अपडेट rubygems को धक्का दिया गया है। –
क्या कोई HTML के लिए इसका उपयोग करने में सफल रहा है? – aaandre
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
प्लगइन के साथ इसका इस्तेमाल किया।
http://github.com/pvande/differ/tree/master
इसे आज़माना और रिपोर्ट के कुछ प्रकार पोस्ट करने की कोशिश करेंगे:
धन्यवाद, यह बेहद उपयोगी था। – aaandre
मैं सिर्फ इतना है कि बहुत लचीला लगता है एक नई परियोजना पाया।
मुझे भी यही संदेह था और मुझे जो समाधान मिला वह 100% रूबी नहीं है, लेकिन मेरे लिए सबसे अच्छा है। diff.rb के साथ समस्या यह है कि यह एक मानवीय तरीके से diffs दिखाने के लिए एक सुंदर formatter नहीं है। इसलिए मैं इस कोड के साथ ओएस से 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
का उपयोग करता है, और सुविधाजनक होने पर और सुंदर आउटपुट विकल्प प्रदान करने पर केंद्रित है।
मैं अपनी परियोजनाओं में से एक के लिए diffy का उपयोग कर रहा हूँ। बस काम करता है। धन्यवाद। – ardsrk
शायद Array.diff के माध्यम से बंदर-पैच में मदद करता है ...
http://grosser.it/2011/07/07/ruby-array-diffother-difference-between-2-arrays/
बस Windows लोगों के लाभ के लिए: diffy शानदार लग रहा है लेकिन मैं belive यह केवल * nix (मुझे ठीक कर लें पर काम करेंगे मैं गलत हूँ)। निश्चित रूप से यह मेरी मशीन पर काम नहीं किया।
मतभेद ने मेरे लिए एक इलाज किया (विंडोज 7 x64, रूबी 1.8.7)।
अब कुछ विंडोज़ समर्थन बेक किया गया है। README में आपको किस प्रकार के सेटअप की आवश्यकता है, इसके बारे में कुछ विवरण हैं। https://github.com/samg/diffy#on-windows – samg
चरित्र संकल्प द्वारा चरित्र प्राप्त करने के लिए मैं 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. एक बहुत बड़ी स्ट्रिंग सरणी या स्ट्रिंग भंडारण?
- 3. रूबी रिफैक्टरिंग: स्ट्रिंग सरणी को int सरणी में परिवर्तित करना
- 4. एक स्ट्रिंग सरणी सी #
- 5. रूबी एक स्ट्रिंग
- 6. रूबी: चरित्र एक स्ट्रिंग
- 7. एक स्ट्रिंग सरणी
- 8. स्ट्रिंग सरणी
- 9. रूबी स्ट्रिंग
- 10. एक स्ट्रिंग सरणी
- 11. सरणी रूबी
- 12. एक स्ट्रिंग सरणी को C#
- 13. रूबी स्ट्रिंग ऑब्जेक्ट खाली या नहीं?
- 14. परिवर्तित स्ट्रिंग सरणी प्रतिनिधित्व वापस एक सरणी
- 15. अक्षर या स्थान दोहराकर रूबी स्प्लिट स्ट्रिंग
- 16. रूबी: स्ट्रिंग
- 17. रूबी स्ट्रिंग स्ट्रिंग मामले
- 18. एक सरणी बनने के लिए एक स्केलर या सरणी को
- 19. जावास्क्रिप्ट स्ट्रिंग को एक सरणी
- 20. एक स्ट्रिंग सरणी को अन्य
- 21. एक ऑब्जेक्ट सरणी का एक स्ट्रिंग सरणी उपclass है?
- 22. रूबी सरणी आंतरिक
- 23. स्ट्रिंग सरणी को स्ट्रिंग
- 24. रूबी स्ट्रिंग सर्च: जो तेजी से विभाजित या रेगेक्स है?
- 25. रूबी स्ट्रिंग
- 26. रूबी स्ट्रिंग
- 27. स्ट्रिंग सरणी में स्ट्रिंग स्ट्रिंग
- 28. तार (रूबी) की सरणी में आम स्ट्रिंग ढूँढना
- 29. स्ट्रिंग स्ट्रिंग सरणी
- 30. सरणी में स्ट्रिंग स्ट्रिंग
मैं आशा व्यक्त की कि अब यह फिर से खोल दी जा सकती है, में यह सवाल reworded है। मुझे लगता है कि सवाल वैध था, सिर्फ इस तरह से शब्द जिसने इसे ध्वनि बना दिया, जिसके परिणामस्वरूप बहुत सारे राय जवाब दिए जाएंगे। यदि आप इसे फिर से खोलने में सहायता करना चाहते हैं, तो आपको "रूबी" और "diff" प्रश्न टैग के नीचे एक छोटा "फिर से खोलना" लिंक देखना चाहिए। – Gerry
यह 10 वां प्रश्न है जो मुझे इस सप्ताह मिला है जिसे ऑफ विषय के रूप में चिह्नित किया गया है। यह विषय बंद नहीं है। यह एक अच्छा सवाल है। कृपया, हॉल मॉनीटर, इसे करने से रोकें। – user1130176
तारों के लिए आप इस उत्तर का उपयोग कर सकते हैं http://stackoverflow.com/a/42573286/745489 – Dzmitry