ลบช่องว่างและบรรทัดใหม่ภายใน String


105

สมมติว่าเรามีสตริงดังนี้:

Hello, my\n       name is Michael.

ฉันจะลบบรรทัดใหม่นั้นและตัดช่องว่างเหล่านั้นหลังจากนั้นเป็นหนึ่งในสตริงเพื่อรับสิ่งนี้ได้อย่างไร

Hello, my name is Michael.

คำตอบ:


189

ตรวจสอบsquishวิธีRails :

http://apidock.com/rails/String/squish


6
วิธีแก้ปัญหาที่ง่ายและสง่างามที่สุด ขอบคุณ. แต่มีสิ่งหนึ่งวิธีนี้ถูกกำหนดไว้ใน Rails ดังนั้นจึงใช้ได้เฉพาะในแอปพลิเคชัน Rails เท่านั้นโชคดีที่เป็นกรณีของฉัน
Kreeki

4
ดังที่ Kreeki กล่าวอย่างไม่ชัดเจนนี่เป็นวิธี Rails ไม่ใช่วิธี Ruby

17
สำหรับบริบทที่ไม่ใช่ Rails ให้ใช้some_string.strip.gsub(/\s+/, " ")สิ่งที่ squish ทำ
rapcal

1
ขอบคุณ! ไม่รู้เรื่องsquish
Francois

38

เพื่อแสดงให้เห็นถึง Rubys ในตัว :

string.gsub("\n", ' ').squeeze(' ')

3
โปรดทราบ: การบีบจะบีบอัดสตริงทั้งหมดที่มาพร้อมกับอักขระหลายตัว ดังนั้น "Squeeze my application's copy" .squeeze => "Squeze my aplication's copy"
charliepark

8
แต่squeeze(' ')เพียงแค่บีบช่องว่าง "Squeeze my application's copy".squeeze(' ') => "Squeeze my application's copy".
steenslag


9

ลองสิ่งนี้:

s = "Hello, my\n       name is Michael."
s.gsub(/\n\s+/, " ")

นี่เป็นคำตอบ "ทับทิมธรรมดา" ที่ดีที่สุดและใช้ได้ดีกับการลอกช่องว่างที่นำหน้าออกจากสตริงหลายเส้น
โคเอ็น.

5
my_string = "Hello, my\n       name is Michael."
my_string = my_string.gsub( /\s+/, " " )

เขาต้องการที่จะลบใน\nอุดมคติ (ฉันรู้สึกว่า) มันควรจะแทนที่ด้วยช่องว่างในกรณีเช่น"Hello,\nMy name is Michael"
อาลี

4

regex นี้จะแทนที่อินสแตนซ์ของช่องว่างสีขาว 1 ช่องหรือมากกว่าด้วยช่องว่าง 1 ช่อง ps \sจะแทนที่อักขระช่องว่างทั้งหมดซึ่งรวมถึง\s\t\r\n\f:

a_string.gsub!(/\s+/, ' ')

ในทำนองเดียวกันสำหรับการคืนรถเท่านั้น

str.gsub!(/\n/, " ")

ก่อนอื่นให้แทนที่ทั้งหมด\nด้วยช่องว่างสีขาวจากนั้นใช้ regex ลบช่องว่างสีขาวหลายรายการ


ขอบคุณ! สิ่งนี้ใช้ได้ผลสำหรับวัตถุประสงค์ของฉันในการลบช่องว่างทวีคูณ แต่รักษาช่องว่างระหว่างคำ
acoustic_north

3

ใช้สตริง # gsub :

s = "Hello, my\n       name is Michael."
s.gsub(/\s+/, " ")

ผลลัพธ์จะไม่ถูกต้องในกรณีของ"Hello,\nMy name is Michael". ตามหลักการแล้วคุณต้องการพื้นที่ที่มี\n
Ali


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