2

を使用してユーザーが入力した文字列の検索に問題がありますgets。概要は次のとおりです。

puts "What are we searching for?"
search = gets
z=1
result = []
file = File.open('somefile.txt', 'r+')

file.each do |line| 
  if line.include?(search)
    result << z
  end
  puts line
  z+=1
end

puts "Found on line(s) #{result}

問題は にあるようif line.include?(search)です。(search)探している値に置き換えると、("example01")このスクリプトは正常に機能します。しかし、ユーザーが入力した値を使用すると、 を使用してgets、それが見つからないようです。("#{search}")どちらも機能しません。

また、スワップして正規表現を使用してみました

if line.include?(search)

if line =~ Regexp.new(search)

同じ問題で。

ここで何が起こっているのですか?前もって感謝します。

4

1 に答える 1

4

試す :

search = gets.chomp

現在の実装には、入力から追加する改行も格納されます。chomp は \n または \r を取り除きます。

于 2011-10-17T00:41:20.880 に答える