วิธีการขึ้นบรรทัดใหม่ในผลลัพธ์


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 sequences ในสตริงที่ยกมาเดี่ยว
kjagiello

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เอาต์พุตสตริงและตัวแบ่งบรรทัด "อัตโนมัติ" ต่อท้าย; นั่นง่ายกว่าการผนวกในโค้ด
Carl Smotricz

+1 สำหรับสิ่งนั้นและวิธีปิดแบบอัตโนมัติที่ดีในการประมวลผลไฟล์
Carl Smotricz

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)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.