如何在Ruby中读取文件时删除换行符

mar*_*875 4 ruby newline line file-read chomp

我正试图摆脱括号[]和新线的\n印刷.

我的代码看起来像:

name1 = File.readlines('first.txt').sample(1)
name2 = File.readlines('middle.txt').sample(1)
name3 = File.readlines('last.txt').sample(1)

name = print (name1.strip 
    print name2.strip 
    print name3.strip)

puts name
Run Code Online (Sandbox Code Playgroud)

我希望输出看起来像JoshBobbyGreen.但是,它看起来像:

[\"Josh\\n\"][\"Bobby\\n\"][\"Green\\n\"]
Run Code Online (Sandbox Code Playgroud)

我已经尝试使用.gsub,chompsplit但也许我使用他们错了.

小智 22

还要考虑 File.readlines 中的可选 chomp 参数

File.readlines("/path/to/file", chomp: true)
Run Code Online (Sandbox Code Playgroud)


Kho*_*oga 10

puts在输出结尾添加换行符.打印没有.使用打印.它可以解决您的问题.另外,使用.strip.

"\tgoodbye\r\n".strip   #=> "goodbye"
Run Code Online (Sandbox Code Playgroud)


Mys*_*yst 3

您的代码存在一个小问题,导致您遇到这样的结果。

当你使用:

name1 = File.readlines('first.txt').sample(1)
Run Code Online (Sandbox Code Playgroud)

返回的值不是字符串,而是具有 1 个随机样本的数组。IE:

["Jhon"]
Run Code Online (Sandbox Code Playgroud)

["Jhon"]这就是为什么您在使用时会得到输出print

既然您期望(并且更喜欢)一个字符串,请尝试以下操作:

name1 = File.readlines('first.txt').sample(1)[0]
name2 = File.readlines('middle.txt').sample(1)[0]
name3 = File.readlines('last.txt').sample(1)[0]
Run Code Online (Sandbox Code Playgroud)

或者:

name1 = File.readlines('first.txt').sample(1).pop
name2 = File.readlines('middle.txt').sample(1).pop
name3 = File.readlines('last.txt').sample(1).pop
Run Code Online (Sandbox Code Playgroud)

或者,可能是您的意思,不带参数,sample将返回一个对象而不是数组:

name1 = File.readlines('first.txt').sample
name2 = File.readlines('middle.txt').sample
name3 = File.readlines('last.txt').sample
Run Code Online (Sandbox Code Playgroud)

另外,在打印时,如果您创建一个字符串来包含您想要的所有空格和格式,那就更好了。IE:

name1 = File.readlines('first.txt').sample(1).pop
name2 = File.readlines('middle.txt').sample(1).pop
name3 = File.readlines('last.txt').sample(1).pop

puts "#{name1} #{name2} #{name3}."
# or
print "#{name1} #{name2} #{name3}."
Run Code Online (Sandbox Code Playgroud)