2014-10-12 36 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)