13

IRB を使用して、特定の文字を削除するために複数行の文字列を入力したいと考えています。「gets」は単一行のみを許可します-複数行に同様の機能はありますか。

ASCII_project.rb(main):002:0* puts = "What's the text you want to strip?"
=> "What's the text you want to strip?"
ASCII_project.rb(main):003:0> str = gets

テキストのセクションに貼り付けたいのですが、新しい行があるため機能しません。これが、複数行にわたって収集したい理由です

ここにコードがあります

# encoding: CP850
puts = "What's the text you want to strip?"
str = gets
str.gsub!(/\P{ASCII}/, '')
puts str
4

4 に答える 4

10

このメソッドを使用できます。最初の空行までテキストを受け入れます

def multi_gets all_text=""
  while (text = gets) != "\n"
    all_text << text
  end
  all_text
end

またはこれ、 \n\n を定義した任意の終了文字に置き換えることができます

def multi_gets all_text=""
  while all_text << STDIN.gets
    return all_text if all_text["\n\n"]
  end
end
于 2012-12-12T13:37:36.120 に答える
9

これは次の方法で行うことができます。

$/ = "END"  
user_input = STDIN.gets
puts user_input

入力が終わったと思ったら必ず END キーワードを入力してください。

同様に、これはirbではなく実際のインタープリターでのみ機能します。

于 2012-12-12T12:42:51.747 に答える
-4
str = <<-EOF
Your multi line
text goes here
.....
EOF

しかし、キャッチはEOFで終わる必要があるということです

于 2012-12-12T13:37:43.757 に答える