2014-10-12 35 views
0

这似乎正常工作,并显示我想Ruby的变量

Dir["/Users/ondrovic/RubyTest/**/*.txt"].each do |i| 
    puts i.green if File.readlines(i).grep(/test/).any? 
end 

结果为什么当我尝试这样它不填充信息

print "Enter search dir" 
src = gets 
print "Enter search term" 
trm = gets 

puts "Looking in #{src} for #{trm}" 

Dir["#{src}/**/*.txt"].each do |i| 
    puts i.green if File.readlines(i).grep(/"#{trm}"/).any? 
end 

我也尝试过这种方式

Dir[src + "/**/*.txt"].each do |i| 
    puts i.green if File.readlines(i).grep(/ + trm + /).any? 
end 

工作代码

require 'colorize' 
print "Enter search dir\n".green 
src = gets.chomp 
print "Enter search term\n".blue 
trm = gets.chomp 

puts "Looking in #{src} for #{trm}" 

Dir["#{src}/**/*.txt"].each do |i| 
    puts i.green if File.readlines(i).grep(/#{trm}/).any? 
end 
+1

替换'/ “#{} TRM”/'和'/#{} TRM /' – Aguardientico 2014-10-12 01:32:25

回答

2

gets的返回值包括换行符:

>> gets 
asdf 
=> "asdf\n" # <---- 
>> 

使用String#chomp移除:

print "Enter search dir" 
src = gets.chomp 
print "Enter search term" 
trm = gets.chomp 
... 

除此之外,图案/"#{trm}"/包括"。删除:

/#{trm}/ 

或者,你可以使用Regexp::new

Regexp.new(trm)