使用gets.chomp()更改变量

时间:2013-01-09 18:13:33

标签: ruby-on-rails ruby gets chomp

我尝试使用此代码写入文件:

  puts "-------------------- TEXT-EDITOR --------------------"
def tor(old_text)
  old_text = gets.chomp #
end


$epic=""

def torr(input)

  tore=  $epic += input + ", "

File.open("tor.txt", "w") do |write|
  write.puts tore
  end
end



loop do
  output = tor(output)
  torr(output)
end

我已经阅读了ruby编程的终极指南 它说如果我想在文件中使用File.open创建一个新行 我必须使用"line one", "line two 我如何使用gets.chomp()来实现这一点?尝试我的代码,你会看到我的意思 谢谢。

2 个答案:

答案 0 :(得分:2)

gets方法会带来任意数量的文字,但会在您点击“Enter”时(或STDIN收到\n后)终止。此输入记录分隔符存储在全局变量$/中。如果更改脚本中的输入分隔符,gets方法实际上会将“输入”键换成您更改全局变量的任何内容。

$/ = 'EOF' # Or any other string
lines = gets.chomp
> This is
> multilined
> textEOF
lines #=> 'This is\nmultilined\ntext'

输入您想要的任何内容,然后在最后输入“EOF”。一旦'看到'EOF,它将终止gets方法。 chomp方法实际上会从结尾处删除字符串'EOF'。

然后将其写入您的文本文件,\n将转换为新行。

File.open('newlines.txt', 'w') {|f| f.puts lines}

newlines.txt:

  

这是
  multilined
  文本

答案 1 :(得分:0)

如果你不使用.chomp(),每当你写一个新行时都会添加\ n字符,如果你将它保存到文件中它也会有一个新行。 .chomp()从输入的末尾删除那些转义字符。

如果这不回答你的问题,我很抱歉我不明白。