Как сделать новую строку в выводе


165

Как мне заставить \nработать на самом деле мой вывод? На данный момент он просто записывает все это в 1 длинный блок. Спасибо за любую помощь

Dir.chdir 'C:/Users/name/Music'
music = Dir['C:/Users/name/Music/*.{mp3, MP3}']
puts 'what would you like to call the playlist?'
@new = ''
playlist_name = gets.chomp + '.m3u'

music.each do |z|
  @new += z + '\n'
end

File.open playlist_name, 'w' do |f|
  f.write @new
end

Ответы:


335

Используйте "\n"вместо'\n'


11
Спасибо за ответ, я выгляжу как дурак, но, по крайней мере, теперь я знаю
babyrats

77
не будь таким строгим с собой: единственный способ учиться - задавать вопросы.
Гленн Джекман

14
@babyrats - ты не единственный :)
Ninad

6
Похоже, что и Ruby, и PHP не раскрывают escape-последовательности в строках в одинарных кавычках.
Кьяджелло

2
"\ n" - это новая строка, '\ n \ - это буквально обратный слеш, а n.
mahemoff

12

Вы можете сделать все это в блоке File.open:

Dir.chdir 'C:/Users/name/Music'
music = Dir['C:/Users/name/Music/*.{mp3, MP3}']
puts 'what would you like to call the playlist?'
playlist_name = gets.chomp + '.m3u'

File.open playlist_name, 'w' do |f|
  music.each do |z|
    f.puts z
  end
end

1
Я предполагаю, что одна интересная и полезная вещь, которую стоит отнять, это putsвывод строки и «автоматический» разрыв строки в конце; это удобнее, чем добавлять его в код.
Карл Смотриц

+1 за это и хороший, автоматически закрывающийся, идиоматический способ обработки файла.
Карл Смотриц

6

Я хотел бы поделиться своим опытом с тем, что \n
я заметил, что "\ n" работает как

puts "\n\n" // to provide 2 new lines

но нет

p "\n\n"

также ставит '\n\n'
не работает.

Надеюсь, у тебя получится !!


5

На самом деле вам даже не нужен блок:

  Dir.chdir 'C:/Users/name/Music'
  music = Dir['C:/Users/name/Music/*.{mp3, MP3}']
  puts 'what would you like to call the playlist?'
  playlist_name = gets.chomp + '.m3u'

  File.open(playlist_name, 'w').puts(music)
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.