我试图使用以下代码比较两个Ruby Hashes:
#!/usr/bin/env ruby
require "yaml"
require "active_support"
file1 = YAML::load(File.open('./en_20110207.yml'))
file2 = YAML::load(File.open('./locales/en.yml'))
arr = []
file1.select { |k,v|
file2.select { |k2, v2|
arr << "#{v2}" if "#{v}" != "#{v2}"
}
}
puts arr
Run Code Online (Sandbox Code Playgroud)
屏幕输出是file2的完整文件.我知道文件不同的事实,但脚本似乎没有拿起它.
我找到了很多关于模糊匹配的链接,将一个字符串与另一个字符串进
我有一个非常长的字符串,它是一个文档和一个子字符串.子字符串来自原始文档,但已被多次转换,因此可能引入了奇怪的工件,例如此处的空格,字符串.子字符串将匹配原始文档中文本的一部分99%或更多.我不匹配以查看此字符串是哪个文档,我试图在文档中找到字符串开始的索引.
如果字符串是相同的,因为没有引入随机错误,我会使用document.index(substring),但是如果甚至有一个字符差异,则会失败.
我认为通过删除除字符串和子字符串中的az之外的所有字符来比较差异,然后使用压缩字符串时生成的索引将压缩字符串中的索引转换为真实文档中的索引.这种情况很好用,其中差异是空格和标点符号,但只要一个字母不同就失败了.
该文档通常是几页到一百页,而子串从几个句子到几页.
我有2个实例对象:@original_files和@ version2_files
我想检索@original_files中找到但在@ version2_files中找不到的元素.
代码如下:
<% @original_files.each do |original_file| %>
<% @version2_files.each do |ver2_file| %>
<% if original_file.name == ver2_file.name%>
<%= original_file.name %> is common to both sets
<% break %>
<% else %>
<% end %>
<% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
如果有人可以帮我弄清楚如何找到@original_files中找到的元素,我将不胜感激.
谢谢