繁体   English   中英

ruby比较字符串和文件内容

[英]ruby compare string with file contents

我的最终目标是将文件中的值与我要从数据库中提取的记录进行比较。

我有一个具有以下结构的文本文件:

123,55,66
555,99,109
324,100,800
467,200,300

然后,我从数据库中提取记录并逐一遍历它们。

sth.fetch do |row|
  validate = "#{row[0]},#{row[20]},#{row[21]}"
  names = File.readlines('results.txt')
  matches = names.select { |name| name[/#{validate}/i] }
  p "Result matches as expected: #{matches}"
end

因此,validate会根据上述示例为我构建相同的格式字符串...然后,我读取文件的所有行并将它们移至数组中,然后进行比较。 因此,这很好,它可以给我所有匹配项,但不告诉我文件中不存在的行?

所以我尝试了

    sth.fetch do |row|
      File.open('results') do |f|
        f.each_line do |line|
          if line == validate
            puts "detail: #{line}"
          else
            puts "detail: #{validate}"
          end
        end
      end
end

但这然后读取了每一行的每一行并进行比较,因此一半实现了我所追求的目标。

因此,我想使用我的“验证”字符串并读取文件的内容,以查看行是否匹配,然后打印出匹配的内容。 或者,如果我拉回一条记录,但该记录与文件不匹配,那么我只希望一条不匹配的消息。

谢谢

我会尝试以下

 names = File.readlines('results.txt').map(&:chomp) 
 sth.fetch do |row|
   validate = "#{row[0]},#{row[20]},#{row[21]}"

    # for direct compare
    # if names.include?(validate)
    # Or for Regexp
    if names.grep(/#{validate}/i).any?
      p "Result matches as expected: #{matches}" 
    else
      p "Result does not matches as expected: #{matches}" 
    end  
 end

 all_matches.uniq!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM