ฉันมีสตริงนี้:
"some text\nandsomemore"
ฉันต้องการลบ "\ n" ออกจากมัน ฉันพยายามแล้ว
"some text\nandsomemore".gsub('\n','')
แต่มันไม่ได้ผล ฉันต้องทำอย่างไร? ขอบคุณที่อ่าน.
ฉันมีสตริงนี้:
"some text\nandsomemore"
ฉันต้องการลบ "\ n" ออกจากมัน ฉันพยายามแล้ว
"some text\nandsomemore".gsub('\n','')
แต่มันไม่ได้ผล ฉันต้องทำอย่างไร? ขอบคุณที่อ่าน.
คำตอบ:
คุณจำเป็นต้องใช้"\n"ไม่ได้'\n'ใน gsub ของคุณ เครื่องหมายคำพูดที่แตกต่างกันทำงานแตกต่างกัน
เครื่องหมายคำพูดคู่"อนุญาตให้ขยายอักขระและการแก้ไขนิพจน์เช่น พวกเขาให้คุณใช้อักขระควบคุมที่ใช้ Escape \nเพื่อแทนค่าที่แท้จริงของพวกเขาในกรณีนี้ขึ้นบรรทัดใหม่และอนุญาตให้ใช้#{expression}เพื่อให้คุณสามารถสานตัวแปรและนิพจน์ทับทิมที่คุณชอบลงในข้อความได้ดีทีเดียว
ในทางกลับกันเครื่องหมายคำพูดเดี่ยวจะ'ปฏิบัติต่อสตริงอย่างแท้จริงดังนั้นจึงไม่มีการขยายการแทนที่การแก้ไขหรือสิ่งที่คุณมี
เฉพาะในกรณีนี้มันจะดีกว่าที่จะใช้อย่างใดอย่างหนึ่ง.deleteหรือ.trวิธี String ลบบรรทัดใหม่
trเป็นทางเลือกที่ดีกว่าสำหรับงานนี้ แต่อย่างที่ฉันพูดฉันคิดว่ามันจะดีกว่าที่จะชี้ให้เห็นความแตกต่างของเครื่องหมายคำพูดเดี่ยวและคู่เมื่อฉันตอบ
เมื่อคุณต้องการลบสตริงแทนที่จะแทนที่คุณสามารถใช้String#delete(หรือสิ่งที่เทียบเท่ามิวเตเตอร์String#delete!) เช่น:
x = "foo\nfoo"
x.delete!("\n")
x ตอนนี้เท่ากับ "foofoo"
ในกรณีเฉพาะนี้String#deleteสามารถอ่านได้มากกว่าgsubเนื่องจากคุณไม่ได้แทนที่สตริงด้วยอะไรเลย
deleteจะไม่ทำลายล้างตามที่ระบุไว้ที่นี่ ส่งคืนสตริงใหม่
หากคุณต้องการหรือไม่สนใจที่จะนำช่องว่างที่นำหน้าและต่อท้ายออกจากสตริงของคุณคุณสามารถใช้stripวิธีนี้ได้
" hello ".strip #=> "hello"
"\tgoodbye\r\n".strip #=> "goodbye"
แก้ไขชื่อเดิมของคำถามนี้แตกต่างกัน คำตอบของฉันคือคำถามเดิม
stripลบเฉพาะช่องว่างที่นำหน้าและต่อท้าย: ruby-doc.org/core-1.9.3/String.html#method-i-strip-21
คุณไม่จำเป็นต้องมีนิพจน์ทั่วไปสำหรับสิ่งนี้ ใช้ tr:
"some text\nandsomemore".tr("\n","")
replaceเพียงแค่เปลี่ยนสตริงเป็นสตริงใหม่เช่นการกำหนดตัวแปร ในขณะที่trเป็นการค้นหาและแทนที่โกลบอลแบบอักขระโดยอักขระ
ใช้chompหรือstripฟังก์ชั่นจาก Ruby:
"abcd\n".chomp => "abcd"
"abcd\n".strip => "abcd"
stripลบเฉพาะช่องว่างที่นำหน้าและต่อท้าย - ruby-doc.org/core-1.9.3/String.html#method-i-strip-21