为什么三个点写入新行?

时间:2011-05-10 15:37:48

标签: ruby string format

puts "Hello! Reading temperature value from data file..."
num = File.read("temp.dat")
puts "The number is #{num}..."
celsius = num.to_i
fahrenheit = (celsius.to_i * 9 / 5) + 32
puts "The Fahrenheit value is: #{ fahrenheit }."

在第三行中,...块之后的#{num}以新行打印。我的印象是使用该块将参数传递给显示器,以便更容易格式化。

为什么圆点会换到新的一行?

5 个答案:

答案 0 :(得分:5)

当您阅读文件时,您也会获得换行符。也许你正在寻找的是:

celsius = File.readlines("temp.dat").first.to_i
puts "The number is #{celsius}..."

如果您看一下您正在阅读的内容,可能会有意义:

puts num.inspect
# => "20\n"

答案 1 :(得分:3)

推测temp.dat以换行符结尾,num包含换行符。要删除换行符,可以使用String#chomp方法,该方法删除字符串末尾的任何换行符。

答案 2 :(得分:2)

我的猜测是换行符来自文件

如果是这种情况那么

puts "The number is #{num.strip}..."

应该修复它。

答案 3 :(得分:0)

当您读取文件时,您还在读取文件中的回车符/换行符。使用String#chomp去除这个额外的不需要的空格:

num = File.read("temp.dat").chomp
puts "The number is #{num}..."

有关详细信息,请参阅http://ruby-doc.org/core/classes/String.html#M001188

答案 4 :(得分:0)

由于您尝试读取整数,因此我从文件中读取单个数字的最简单方法是:

File.read('temp.dat').to_i
# => 42

to_i将解析,直到第一个非数字为" \ n"。此时它将停止读取并仅返回转换为整数的值。

这样做可以让您清理代码并将其缩小为:

puts "Hello! Reading temperature value from data file..."
celsius = File.read("temp.dat").to_i
puts "The number is #{ celsius }..."
fahrenheit = (celsius * 9 / 5) + 32
puts "The Fahrenheit value is: #{ fahrenheit }."

这不是一般阅读文件的方式,它只是这个特定问题的答案。