How to remove line break when reading files in Ruby

I am trying to get rid of the brackets []and print a new line \n.

My code looks like this:

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

I would like the result to look like JoshBobbyGreen. However, it looks like this:

[\"Josh\\n\"][\"Bobby\\n\"][\"Green\\n\"]

I tried using .gsub, chompand split, but maybe I'm using them incorrectly.

+4
source share
5 answers

There is a minor issue in your code that causes the results you are experiencing.

when you use:

name1 = File.readlines('first.txt').sample(1)

The return value is NOT NOT a string, but an array with 1 random pattern. i.e:

["Jhon"]

["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]

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

, , , sample :

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

, , , . :.

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}."
+3

puts . . . . , .strip.

"\tgoodbye\r\n".strip   #=> "goodbye"
+10

:

name1 = ["Josh\n"]
name2 = ["Bobby\n"]
name3 = ["Green\n"]

:

puts [name1, name2, name3].map { |a| a.first.strip }.join('')
  #=> JoshBobbyGreen
+1
puts %w(first middle last).map { |e| IO.readlines("#{e}.txt").sample.strip }.join
0

\n split:

File.read('first.txt').split("\n") # double quotes are important!

, sample :

File.read('first.txt').split("\n").sample
0

Source: https://habr.com/ru/post/1609152/


All Articles