Como fazer uma nova linha na saída

165

Como faço para \nrealmente trabalhar na minha saída? No momento, apenas escreve tudo em um bloco longo. Obrigado por qualquer ajuda

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
babyrats
fonte

Respostas:

335

Use em "\n"vez de'\n'

kjagiello
fonte
11
Obrigado pela resposta, me faz parecer um tolo, mas pelo menos agora eu sei
babyrats
77
não seja tão duro consigo mesmo: a única maneira de aprender é fazendo perguntas.
precisa saber é o seguinte
14
@babyrats - u não o único :)
Ninad
6
Parece que Ruby e PHP não expandem seqüências de escape em seqüências de caracteres entre aspas simples.
Kdagiello # 31413
2
"\ n" é nova linha, '\ n \ é literalmente barra invertida e n.
Mahemoff # 20/15
12

Você pode fazer isso tudo no bloco 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
Ben
fonte
1
Eu acho que uma coisa interessante e útil para tirar isso é que putsgera uma string e uma quebra de linha à direita "automática"; isso é mais prático do que anexá-lo no código.
Carl Smotricz
+1 para isso e a boa maneira idiomática de fechamento automático de processar um arquivo.
Carl Smotricz
6

Gostaria de compartilhar minha experiência e \n
percebi que "\ n" funciona como-

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

mas não

p "\n\n"

também coloca '\n\n'
Não funciona.

Espero que funcione para você !!

S.Yadav
fonte
5

Na verdade, você nem precisa do bloco:

  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)
Tim Breitkreutz
fonte