ฟังก์ชั่นทับทิมเพื่อลบช่องว่างสีขาวทั้งหมดหรือไม่


573

ฟังก์ชัน Ruby เพื่อลบช่องว่างสีขาวทั้งหมดคืออะไร? ฉันกำลังมองหาบางอย่างเช่น PHP trim()ใช่ไหม


36
คำถามของคุณไม่ชัดเจน: คุณต้องการลบช่องว่างทั้งหมดหรือคุณต้องการกำจัดช่องว่างนำหน้าและต่อท้ายหรือไม่
Sinan Ünür

25
trim()แถบของ PHP whitespace " จากจุดเริ่มต้นและจุดสิ้นสุดของสตริง " (ตามที่ระบุไว้ในเอกสารประกอบ ) มันไม่ได้ลบ "whitespaces ทั้งหมด"
Tadeck

3
หากมีข้อสงสัยให้ดูที่เอกสารทับทิมออนไลน์สำหรับคลาส String (ดู. แถบด้านล่าง)
Merovex

2
โปรดทราบว่าคำตอบทั้งหมดที่ใช้String#stripหรือจับคู่/\s+/จะลบเฉพาะช่องว่าง ASCII เท่านั้น หากคุณต้องการแน่ใจว่าช่องว่างที่ไม่ใช่ ASCII นั้นถูกจับเช่นกัน (เช่นของ HTML &nbsp) ดูคำตอบที่ไม่เป็นที่นิยมจาก @EBooker
MatzFan

1
น่าเสียดายที่คำตอบที่ยอดเยี่ยมเช่นนี้ไม่สามารถรับศักดิ์ศรีสุดท้ายของผู้ที่ได้รับการยอมรับ
นิวซานเดรีย

คำตอบ:


846

หากคุณต้องการลบเฉพาะช่องว่างนำหน้าและต่อท้าย (เช่นการตัดแต่งของ PHP) คุณสามารถใช้.stripแต่ถ้าคุณต้องการลบช่องว่างทั้งหมดคุณสามารถใช้.gsub(/\s+/, "")แทนได้


5
"/ \ s + /" simple แปลว่าช่องว่างหรือไม่
ทางรถไฟเริ่มต้น

54
\ s + หมายถึงอักขระช่องว่าง 1 ตัวขึ้นไป (ช่องว่าง, บรรทัดใหม่, แท็บ) รายการ // โดยรอบแสดงว่าเป็นนิพจน์ปกติ
dylanfm

3
สิ่งนี้ไม่เท่ากับ trim ()
Brett Holt

6
เปลื้องผ้าเป็นสิ่งที่ฉันกำลังมองหาขอบคุณสำหรับคำถามที่ดีและ awnser!
Francois

15
@BrettHolt นิพจน์ gsub ไม่เหมือนกับ trim แต่ผู้ถามได้ใส่วลี "all whitespace" ซึ่งไม่เหมือนกับ trim เลย ดังนั้นฉันจึงให้ทางเลือก
joel.neely

494
s = "I have white space".delete(' ')

และเพื่อเลียนแบบtrim()ฟังก์ชั่นของ PHP :

s = "   I have leading and trailing white space   ".strip

12
นี่สามารถอ่านได้มากกว่า regex ทำไมไม่เป็นที่นิยม
ckarbass

89
@ckarbass: เพราะหลายคนชอบแก้ปัญหาที่ซับซ้อนมากเกินไปกับปัญหาง่ายๆ มันหายไปจากประสบการณ์
Ed S.

97
@ckarbass @Ed S. มันไม่เป็นที่นิยมเพราะมันไม่เหมือนกัน คำถามเดิมใช้วลี "all whitespace" ซึ่งรวมถึงแท็บการขึ้นบรรทัดใหม่ ฯลฯ คำตอบที่เสนอนี้จะไม่ลบอักขระช่องว่างอื่น ๆ เหล่านั้นออก สำหรับ "ซับซ้อนมากเกินไป" ฉันขอแนะนำให้เปรียบเทียบนิพจน์ทั่วไปอย่างง่าย.delete(' ').delete('\t').delete('\n') ...ซึ่งเป็นคำอธิบายที่มากเกินไปและให้โอกาสมากมายสำหรับการพิมพ์ผิดและข้อผิดพลาดของการละเลย
joel.neely

13
@ joel.neely: ฉันตอบคำถามนี้มานานแล้ว แต่อ่านคำถามอีกครั้งคราวนี้อย่างระมัดระวังมากขึ้น สหกรณ์ถาม"ฟังก์ชั่นลบช่องว่างทุกคน"แต่แล้วก็ถามหา"สิ่งที่ต้องการตัดของ PHP ()" ดังนั้นจึงเป็นเรื่องยากที่จะรู้ว่าสิ่งที่พวกเขาต้องการที่นี่ trim()แน่นอนไม่ได้ลบบรรทัดใหม่และตัวละครช่องว่างอื่น ๆ คุณกำลังเลือกหนึ่งการตีความคำถามที่คลุมเครือ
Ed S.

4
@ joel.neely: ที่กล่าวว่าฉันยอมรับว่าทางออกที่นอกเหนือไปจากการตีความที่แท้จริงของคำถามนั้นดีกว่าในกรณีนี้ (เช่น regex ลบอักขระทั้งหมดซึ่งจะเป็นช่องว่างมากกว่าสายของการdelete()โทร)
Ed S.

163

คำตอบที่เกี่ยวข้อง:

"   clean up my edges    ".strip

ผลตอบแทน

"clean up my edges"

นั่นคือสิ่งที่ฉันลืมไป ฉันรู้ว่ามีวิธีการลบช่องว่างที่จะทำเช่นนั้นโดยค่าเริ่มต้นหากไม่มีข้อโต้แย้งถูกส่งผ่าน +1
Ed S.

นี่เท่ากับการตัดแต่ง โปรดอ้างถึงคำพูดจาก @Tadeck ด้านบน
Brett Holt

3
หากมีความเป็นไปได้ที่ตัวแปรนั้นnilต้องแน่ใจว่าได้รัน.to_sเมธอดก่อนที่จะรันสตริปเพื่อที่เมธอดสตริปจะไม่ทำให้เกิดข้อผิดพลาด อดีต str=nil; str.to_s.strip #=> ""
scarver2

ฉันชอบ some_data.strip! ถ้า some_data.is_a String
slindsey3000

156

String#strip - ลบช่องว่างทั้งหมดจากจุดเริ่มต้นและจุดสิ้นสุด

String#lstrip - ตั้งแต่เริ่มต้น

String#rstrip - จากจุดสิ้นสุด

String#chomp(โดยไม่มีข้อโต้แย้ง) - ลบตัวคั่นบรรทัด ( \nหรือ\r\n) ออกจากท้าย

String#chop - ลบอักขระตัวสุดท้าย

String#delete- x.delete(" \t\r\n")- ลบช่องว่างที่ระบุไว้ทั้งหมด

String#gsub- x.gsub(/[[:space:]]/, '')- ลบช่องว่างทั้งหมดรวมทั้งคน Unicode


หมายเหตุ : วิธีการทั้งหมดข้างต้นคืนสตริงใหม่แทนการกลายพันธุ์เดิม ถ้าคุณต้องการเปลี่ยนสายอักขระให้เรียกใช้เมธอดที่เกี่ยวข้องด้วย!ในตอนท้าย


ตัวอย่าง String # delete ปรากฏว่าใช้ regex แต่\sอยู่ในเครื่องหมายคำพูดแทนเครื่องหมายทับ นอกจากนี้ฉันไม่พบการกล่าวถึงในเอกสารที่ลบสามารถใช้ regex เป็นอาร์กิวเมนต์
slothbear

@slothbear ไม่ใช่ regex เป็นชุดรูปแบบขนาดเล็กที่คล้ายกับ regex สำหรับเอกสารมีการกล่าวถึงการทำงานในทำนองเดียวกันกับ#delete #countคุณสามารถลองในคอนโซลได้เช่นกัน
ndnenkov

ขอบคุณที่สอนสิ่งใหม่ให้ฉัน และขอขอบคุณสำหรับการเตือนให้ลองสิ่งต่างๆในบริบทที่เล็กที่สุดเท่าที่จะเป็นไปได้ (บรรทัดคำสั่ง)
slothbear

1
@SeinopSys ฉันต้องการเก็บทับทิมคำตอบนี้ไว้เท่านั้น
ndnenkov

2
เฉพาะตัวอย่างสุดท้ายในคำตอบนี้จะจับ ASCII 160 'พื้นที่ไม่ทำลาย' ซึ่งเป็นความหายนะของเว็บแครปเปอร์ #stripไม่. ดูstackoverflow.com/questions/4859438/…
MatzFan

95
"1232 23 2 23 232 232".delete(' ')
=> "123223223232232"

ลบงานเร็วขึ้น =)

user         system     total      real
gsub, s      0.180000   0.010000   0.190000 (0.193014)
gsub, s+     0.200000   0.000000   0.200000 (0.196408)
gsub, space  0.220000   0.000000   0.220000 (0.222711)
gsub, join   0.200000   0.000000   0.200000 (0.193478)
delete       0.040000   0.000000   0.040000 (0.045157)

1
แต่สิ่งนี้จะลบออกเท่านั้นspacesไม่ใช่ทั้งหมดwhite spaces
Gavriel

1
delete(" \t\r\n")จะดูแลช่องว่างทั่วไปและยังเร็วกว่า gsub
เซทเจฟ

94

หากคุณใช้ Rails / ActiveSupportคุณสามารถใช้squishวิธีการได้ มันลบพื้นที่สีขาวที่ปลายทั้งสองของสตริงและกลุ่มหลายพื้นที่สีขาวเป็นพื้นที่เดียว

สำหรับเช่น

" a  b  c ".squish

จะส่งผลให้:

"a b c"

ตรวจสอบการอ้างอิงนี้จาก api.rubyonrails.org


4
โปรดทราบว่าคำตอบที่ลิงก์อย่างเดียวนั้นไม่ได้รับการสนับสนุนดังนั้นคำตอบนั้นควรเป็นจุดสิ้นสุดของการค้นหาวิธีแก้ไขปัญหา (เทียบกับอีกหนึ่งการหยุดพักระหว่างการอ้างอิงอื่น ๆ โปรดลองเพิ่มบทสรุปแบบสแตนด์อโลนที่นี่โดยคงลิงก์ไว้เป็นข้อมูลอ้างอิง
kleopatra

2
ฉันคิดว่าคำตอบนี้เพียงพอที่จะอธิบายและความจริงที่ว่าการเชื่อมโยงเป็นการอ้างอิงเนื่องจากคำตอบนั้นชัดเจนอธิบาย ฟังก์ชั่นนี้เป็นสิ่งที่ดีขอบคุณ
ksugiarto

4
นี่คือจาก ActiveSupport คุณไม่ต้องการ Rails ทั้งหมดเพื่อใช้งาน แต่คุณต้องการ ActiveSupport อย่างน้อยและ arequire 'active_support/core_ext/string/filters'
Justin Force

2
เพื่อความชัดเจนนี่คือช่องว่างใด ๆ เช่น"a \t \n \f \r \v b".squish == "a b"
Purplejacket

47

มันค่อนข้างช้า แต่ใครก็ตามที่ Google หน้านี้อาจสนใจรุ่นนี้ -

หากคุณต้องการล้างข้อความที่จัดรูปแบบไว้ล่วงหน้าซึ่งผู้ใช้อาจตัดและวางลงในแอปของคุณ แต่อย่างใดให้คงระยะห่างระหว่างคำไว้ให้ลองทำดังนี้:

content = "      a big nasty          chunk of     something

that's been pasted                        from a webpage       or something        and looks 

like      this

"

content.gsub(/\s+/, " ").strip

#=> "a big nasty chunk of something that's been pasted from a webpage or something and looks like this"

33
เราสามารถใช้squishวิธีของ Rails : apidock.com/rails/String/squish
Phillip Koebbe

5
หรือถ้าคุณไม่มี Rails และคุณไม่มีบรรทัดใหม่squeeze(" ")อาจใช้งานได้
Andrew Grimm

45

ทับทิมของ.stripวิธีการดำเนินการเทียบเท่า PHP trim()เพื่อ

หากต้องการลบพื้นที่ว่างทั้งหมด:

"  leading    trailing   ".squeeze(' ').strip
=> "leading trailing"

@Tass ทำให้ฉันรู้ว่าคำตอบเดิมของฉันลบตัวอักษรที่ซ้ำกันติด ๆ กัน - YUCK! ฉันได้เปลี่ยนมาใช้วิธี squish ซึ่งฉลาดกว่าเกี่ยวกับเหตุการณ์เช่นนี้หากใช้เฟรมเวิร์กของ Rails

require 'active_support/all'
"  leading    trailing   ".squish
=> "leading trailing"

"  good    men   ".squish
=> "good men"

อ้างอิง: http://apidock.com/rails/String/squish


1
ตัวเลือกนี้จะลบอักขระที่ซ้ำกัน "ร่วม" "good men".squeeze.stripจะกลับมา"god men"
Tass

1
ขอบคุณสำหรับการชี้ให้เห็นว่า @Tass ฉันได้แก้ไขคำตอบของฉันในความโปรดปรานของวิธีการ squish
Scarver2

1
+1 สำหรับ "ตัวอักษรซ้ำซ้อนกัน" ฉันไม่สามารถอธิบายสถานการณ์ได้ ทำได้ดี! :-)
Tass


20

อย่าลืม:

$ s = "   I have white space   ".split
=> ["I", "have", "white", "space"]

6
ดังนั้น s.split.join จะทำงาน
Piotr Brudny

1
นี่เป็นสิ่งที่ดีเมื่อทำซ้ำ:[" Hello World", "Big Giraffe "].map(&:split).map(&:join) #=> ["HelloWorld", "BigGiraffe"]
tbloncar

20

split.join จะระเบิดช่องว่างทั้งหมดที่ใดก็ได้ในสตริง

"  a b  c    d     ".split.join
> "abcd"

มันง่ายในการพิมพ์และจดจำดังนั้นมันดีบนคอนโซลและสำหรับการแฮ็คอย่างรวดเร็ว เนื้อหาไม่ได้รับการต้อนรับด้วยโค้ดที่ร้ายแรงแม้ว่าจะเป็นการปิดบังเจตนา

(ขึ้นอยู่กับความคิดเห็นของ Piotr ในคำตอบของ Justicleด้านบน)


1
ขอบคุณมากสำหรับความคิดเห็นนี้ :-) นี่เป็นวิธีการเดียวที่ใช้งานได้หากคุณมีสตริงยาวซึ่งดูเหมือนย่อหน้า
Boomerange

12

คุณสามารถลองสิ่งนี้

"Some Special Text Values".gsub(/[[:space:]]+/, "")

using : space:ลบช่องว่างไม่แตกพร้อมกับช่องว่างปกติ


1
นี้เป็นจริง IMHO ตอบที่ดีที่สุดในขณะที่ HTML ป่า&nbspและช่องว่างที่ไม่ใช่ ASCII อื่น ๆ จะไม่ถูกลบออกจากหรือจับคู่โดยString#strip /\s/ดูหัวข้อ "POSIX Bracket expressions" ในเอกสาร Regexp
MatzFan

8

ใช้ gsub หรือลบ ความแตกต่างคือ gsub สามารถลบแท็บได้ในขณะที่การลบไม่สามารถทำได้ บางครั้งคุณมีแท็บในไฟล์ที่เพิ่มโดยบรรณาธิการ

a = "\tI have some whitespaces.\t"
a.gsub!(/\s/, '')  #=>  "Ihavesomewhitespaces."
a.gsub!(/ /, '')   #=>  "\tIhavesomewhitespaces.\t"
a.delete!(" ")     #=>  "\tIhavesomewhitespaces.\t"
a.delete!("/\s/")  #=>  "\tIhavesomewhitespaces.\t"
a.delete!('/\s/')  #=>  using single quote is unexpected, and you'll get "\tI have ome whitepace.\t"

8

มีหลายวิธี
ในการลบช่องว่างออกจากทั้งสองด้าน:

ชนิดของการตัดแต่งของ php ()

Foo_bar.strip

หากต้องการลบช่องว่างทั้งหมด:

Foo_bar.gsub(/ /, "")

หากต้องการลบพื้นที่ว่างทั้งหมด:

Foo_bar.gsub(/\s/, "")


6

วิธี gsub จะทำได้ดี
วิธีการ gsub สามารถเรียกบนสตริงและพูดว่า:

a = "this is a string"
a = a.gsub(" ","")
puts a
#Output: thisisastring

วิธีการ gsub ค้นหาการเกิดขึ้นของอาร์กิวเมนต์แรกทุกครั้งและแทนที่ด้วยอาร์กิวเมนต์ที่สอง ในกรณีนี้มันจะแทนที่ทุกพื้นที่ภายในสตริงและลบออก

ตัวอย่างอื่น:

b = "the white fox has a torn tail"

ลองแทนที่ตัวอักษร "t" ทุกตัวด้วยตัวพิมพ์ใหญ่ "T"

b = b.gsub("t","T")
puts b 
#Output: The whiTe fox has a Torn Tail

5

สำหรับพฤติกรรมที่ตรงกับ PHP trimวิธีที่ง่ายที่สุดคือการใช้String#stripวิธีการเช่น:

string = "  Many have tried; many have failed!    "
puts "Original [#{string}]:#{string.length}"
new_string = string.strip
puts "Updated  [#{new_string}]:#{new_string.length}"

Ruby ยังมีรุ่นแก้ไขในสถานที่เช่นกันที่เรียกว่าString.strip!(หมายเหตุต่อท้าย '!') สิ่งนี้ไม่จำเป็นต้องสร้างสำเนาของสตริงและอาจเร็วขึ้นอย่างมากสำหรับการใช้งานบางอย่าง:

string = "  Many have tried; many have failed!    "
puts "Original [#{string}]:#{string.length}"
string.strip!
puts "Updated  [#{string}]:#{string.length}"

ทั้งสองเวอร์ชันสร้างเอาต์พุตนี้:

Original [  Many have tried; many have failed!    ]:40
Updated  [Many have tried; many have failed!]:34

ฉันสร้างมาตรฐานเพื่อทดสอบประสิทธิภาพของการใช้งานพื้นฐานstripและstrip!รวมถึงทางเลือกอื่น ๆ การทดสอบคือ:

require 'benchmark'

string = 'asdfghjkl'
Times = 25_000

a = Times.times.map {|n| spaces = ' ' * (1+n/4); "#{spaces}#{spaces}#{string}#{spaces}" }
b = Times.times.map {|n| spaces = ' ' * (1+n/4); "#{spaces}#{spaces}#{string}#{spaces}" }
c = Times.times.map {|n| spaces = ' ' * (1+n/4); "#{spaces}#{spaces}#{string}#{spaces}" }
d = Times.times.map {|n| spaces = ' ' * (1+n/4); "#{spaces}#{spaces}#{string}#{spaces}" }

puts RUBY_DESCRIPTION
puts "============================================================"
puts "Running tests for trimming strings"

Benchmark.bm(20) do |x|
  x.report("s.strip:")                 { a.each {|s| s = s.strip } }
  x.report("s.rstrip.lstrip:")         { a.each {|s| s = s.rstrip.lstrip } }
  x.report("s.gsub:")                  { a.each {|s| s = s.gsub(/^\s+|\s+$/, "") } }
  x.report("s.sub.sub:")               { a.each {|s| s = s.sub(/^\s+/, "").sub(/\s+$/, "") } }

  x.report("s.strip!")                 { a.each {|s| s.strip! } }
  x.report("s.rstrip!.lstrip!:")       { b.each {|s| s.rstrip! ; s.lstrip! } }
  x.report("s.gsub!:")                 { c.each {|s| s.gsub!(/^\s+|\s+$/, "") } }
  x.report("s.sub!.sub!:")             { d.each {|s| s.sub!(/^\s+/, "") ; s.sub!(/\s+$/, "") } }
end

ผลลัพธ์เหล่านี้คือ:

ruby 2.2.5p319 (2016-04-26 revision 54774) [x86_64-darwin14]
============================================================
Running tests for trimming strings
                           user     system      total        real
s.strip:               2.690000   0.320000   3.010000 (  4.048079)
s.rstrip.lstrip:       2.790000   0.060000   2.850000 (  3.110281)
s.gsub:               13.060000   5.800000  18.860000 ( 19.264533)
s.sub.sub:             9.880000   4.910000  14.790000 ( 14.945006)
s.strip!               2.750000   0.080000   2.830000 (  2.960402)
s.rstrip!.lstrip!:     2.670000   0.320000   2.990000 (  3.221094)
s.gsub!:              13.410000   6.490000  19.900000 ( 20.392547)
s.sub!.sub!:          10.260000   5.680000  15.940000 ( 16.411131)

3

ความชอบส่วนตัวของฉันใช้วิธีนี้ .tr

ในขณะที่:

string = "this is a string to smash together"

string.tr(' ', '') # => "thisisastringtosmashtogether"

ขอบคุณ @FrankScmitt สำหรับการชี้ให้เห็นว่าการทำเช่นนี้ลบช่องว่างทั้งหมด (ไม่ใช่แค่ช่องว่าง) คุณจะต้องเขียนเป็นดังนี้:

string = "this is a string with tabs\t and a \nnewline"

string.tr(" \n\t", '') # => "thisisastringwithtabsandanewline"

แต่สิ่งนี้จะลบออกเท่านั้นspacesไม่ใช่all white spaces
Gavriel

หากต้องการลบช่องว่างสีขาวทั้งหมด (ช่องว่างแท็บบรรทัดใหม่) ให้พิจารณาใช้s.tr(" \t\n", '')แทน
Frank Schmitt

@Gavriel - ฉันเข้าใจผิด / เข้าใจผิดคำถามขอบคุณที่ชี้ให้เห็น
Jeremy Gunter

@FrankSchmitt ฉันได้เพิ่มการแก้ไขของคุณในคำตอบของฉันเพื่อตอบคำถามของ OP อย่างถูกต้องมากขึ้น ขอบคุณสำหรับการแก้ไขฉัน
Jeremy Gunter

3

ฉันพยายามทำเช่นนี้เพราะฉันต้องการใช้บันทึก "ชื่อ" เป็นรหัสในมุมมอง แต่ชื่อมีช่องว่าง

ทางออกคือ:

record.value.delete(' ') # Foo Bar -> FooBar

1

ทับทิม.scan()และ.join()วิธีการของสตริงยังสามารถช่วยในการเอาชนะช่องว่างในสตริง

scan(/\w+/).join จะลบช่องว่างทั้งหมดและเข้าร่วมสตริง

string = "White spaces in me".scan(/\w+/).join
=>"Whitespacesinme"

นอกจากนี้ยังเป็นการลบช่องว่างออกจากส่วนด้านซ้ายและด้านขวาของสตริง หมายถึงltrim, และrtrim trimในกรณีถ้ามีคนมีพื้นหลังมากกว่าC, FoxProหรือและกระโดดในVisual BasicRuby

2.1.6 :002 > string = " White spaces in me ".scan(/\w+/).join => "Whitespacesinme" 2.1.6 :003 > string = " White spaces in me".scan(/\w+/).join => "Whitespacesinme" 2.1.6 :004 > string = "White spaces in me ".scan(/\w+/).join => "Whitespacesinme" 2.1.6 :005 >


1
@AmitPandya ขอบคุณมากสำหรับการชี้ให้เห็นประเด็นสำคัญเพิ่มเติมของวิธีการสแกน () ขอบคุณมาก !!!
Dharmesh Rupani


1

ฉันบิตปลายเกม strip!แต่ฉันจะลบต่อท้ายและนำช่องว่างโดยใช้ หากคุณมีอาร์เรย์เช่นฉันฉันต้องทำซ้ำผ่านอาร์เรย์และบันทึกหลังจากอินสแตนซ์สิ้นสุดลง ตัว! ดูแลสิ่งนี้ การทำเช่นนี้จะลบช่องว่างทั้งหมดในตอนท้ายหรือตอนเริ่มต้นไม่ใช่เฉพาะส่วนนำหน้าหรือส่วนท้ายสุด

ตัวอย่างเช่น:

array = ["hello ","   Melanie", "is", " new ", "to  ", " programming"]
array.each do |i|
  i.strip!
end

สิ่งนี้จะส่งออกไปที่: ["hello", "Melanie", "is", "new", "to", "programming"] ฉันสำรวจเพิ่มเติม / แบ่งปันสิ่งนี้ในวิดีโอที่ฉันทำเพื่อเน้นรหัสนี้สำหรับคำถามที่คล้ายกันที่ฉันมีในวิดีโอที่ฉันทำเพื่อเน้นรหัสนี้สำหรับคำถามที่คล้ายกันผมมี

ฉันใหม่กว่าในการเขียนโปรแกรมและการใช้แถบไม่ทำงานเนื่องจากไม่ได้บันทึกลงในอาร์เรย์หลังจากวนรอบสิ้นสุดลง


0

คุณสามารถลองสิ่งนี้:

"ab c d efg hi ".split.map(&:strip)

เพื่อให้ได้สิ่งนี้:

["ab, "c", "d", "efg", "hi"]

หรือถ้าคุณต้องการสตริงเดี่ยวใช้:

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