【问题标题】:changing a variable using gets.chomp()使用 gets.chomp() 更改变量
【发布时间】:2013-01-09 18:13:33
【问题描述】:

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

  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() 来实现这一点?试试我的代码,你会明白我的意思 谢谢。

【问题讨论】:

  • 你的代码应该做什么?如果您的方法有更有意义的名称也会有所帮助
  • 我的代码应该创建一个新文件,当您键入内容时,每次按 Enter 键/创建一个新句子时都会创建一个新行。例如,当您执行 File.open("tor.txt", "w") do |write| write.puts "line one", "line two" end end 时,它会创建一个新行什么意思?

标签: ruby-on-rails ruby gets chomp


【解决方案1】:

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

$/ = '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:

这是
多线
文字

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-21
      • 2017-08-28
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 2023-03-24
      • 2017-10-29
      相关资源
      最近更新 更多