สตริงคือลำดับของอักขระ
สตริงคือออบเจ็กต์ ดังนั้นสตริงจึงมีวิธีการมากมายที่คุณสามารถใช้ทำสิ่งต่างๆ กับสตริงได้
ในบทความนี้ คุณจะค้นพบ วิธีสตริงทับทิม . ที่มีประโยชน์ที่สุด พร้อมตัวอย่าง!
สารบัญ
- 1 วิธีรับความยาวของสตริง
- 2 วิธีตรวจสอบว่าสตริงว่างหรือไม่
- 3 การแก้ไขสตริงคืออะไร
- 4 วิธีการแยกสตริงย่อย
- 5 วิธีค้นหาว่าสตริงมีสตริงอื่นหรือไม่
- 6 วิธีใส่สายทับทิม
- 7 เปรียบเทียบกรณีละเว้นสตริง
- 8 วิธีตัดแต่งสตริงและลบช่องว่าง
- คำนำหน้าและคำต่อท้ายสตริง 9 เส้น
- 10 แปลงสตริงเป็นอาร์เรย์ของอักขระ
- 11 แปลงอาร์เรย์เป็นสตริง
- 12 แปลงสตริงให้เป็นจำนวนเต็ม
- 13 ตรวจสอบว่าสตริงเป็นตัวเลขหรือไม่
- 14 วิธีต่อท้ายตัวละคร
- 15 วนซ้ำอักขระของสตริงใน Ruby
- 16 วิธีแปลงสตริงเป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็กใน Ruby
- 17 วิธีสร้างสตริงหลายบรรทัด
- 18 วิธีแทนที่ข้อความภายในสตริงโดยใช้วิธี Gsub
- 19 วิธีลบอักขระตัวสุดท้ายออกจากสตริง
- 20 วิธีเปลี่ยนการเข้ารหัสสตริง
- 21 นับตัวละคร
- 22 สรุป
- 22.1 ที่เกี่ยวข้อง
วิธีรับความยาวของสตริง
ง่าย:
"ruby".size # 4
คุณยังสามารถใช้ length
, แทนที่จะเป็น size
, พวกเขาทำสิ่งเดียวกัน
วิธีตรวจสอบว่าสตริงว่างหรือไม่
เรากำหนดสตริงว่างเป็นสตริงที่มีความยาวเป็นศูนย์
ตรวจสอบได้ดังนี้ :
"".size == 0 # true
หรือดีกว่านั้น ใช้ empty?
วิธีการ
ตัวอย่าง :
"".empty? # true
สตริงว่างคือสตริงที่มีความยาวเป็นศูนย์ หรือประกอบด้วยอักขระช่องว่างเท่านั้น
การแก้ไขสตริงคืออะไร
การแก้ไขสตริงช่วยให้คุณรวมสตริงเข้าด้วยกัน:
name = "Jesus" puts "Hello #{name}"
สิ่งที่บางคนไม่รู้คือคุณสามารถมีโค้ดจริงในการแก้ไขได้
นี่คือตัวอย่าง:
puts "The total is #{1+1}" # "the total is 2"
Ruby เรียก to_s
เมธอดบนบล็อกการแก้ไขสตริง ซึ่งจะบอกให้อ็อบเจ็กต์แปลงตัวเองเป็นสตริง
วิธีการแยกสตริงย่อย
สตริงย่อยเป็นส่วนที่เล็กกว่าของสตริง ซึ่งจะมีประโยชน์หากคุณต้องการเฉพาะส่วนที่เฉพาะเจาะจง เช่น จุดเริ่มต้น ตรงกลาง หรือจุดสิ้นสุด
คุณจะได้รับสตริงย่อยใน Ruby ได้อย่างไร
วิธีหนึ่งคือการใช้ดัชนีเริ่มต้นและจำนวนอักขระในวงเล็บเหลี่ยม โดยคั่นด้วยเครื่องหมายจุลภาค
ถูกใจสิ่งนี้ :
string = "abc123" string[0,3] # "abc" string[3,3] # "123"
ตัวเลขแรกคือดัชนีเริ่มต้น
ตัวเลขที่สองคือจำนวนอักขระที่คุณต้องการ
คุณยังสามารถใช้ช่วงได้หากต้องการทำบางอย่าง เช่น "รับอักขระทั้งหมดยกเว้นอักขระสุดท้าย"
ตัวอย่าง :
string = "abc123" string[0..-2] # "abc12"
ตอนนี้ ดัชนีแรกยังคงเป็นดัชนีเริ่มต้น แต่ดัชนีที่สองคือดัชนีสิ้นสุด (รวม) -2
นี้ เป็นอักขระตัวที่สองถึงตัวสุดท้าย และ -1
คือจุดสิ้นสุดของสตริง
หากคุณต้องการลบหรือแทนที่สตริงย่อย .
คุณสามารถทำสิ่งนี้:
string[0..2] = "" p string # "123"
ดีมาก!
วิธีค้นหาว่าสตริงมีสตริงอื่นหรือไม่
วิธีใดง่ายที่สุดในการค้นหาว่าสตริงนั้นรวมอยู่ในสตริงอื่นหรือไม่
include?
วิธีการ:
string = "Today is Saturday" string.include?("Saturday") # true
คุณยังสามารถใช้ index
วิธีการ:
string = "Today is Sunday" string.index("day") # 2
วิธีนี้จะค้นหาคำบางส่วน &แทนที่จะคืนค่าจริงหรือเท็จ จะให้ดัชนีที่จุดเริ่มต้นของสตริงนี้
ในตัวอย่างนี้ index
กำลังค้นหา "วัน" ใน "วันนี้"
หากคุณต้องการค้นหารูปแบบ (เช่นทุกคำที่มีคำว่า "วัน") คุณกำลังมองหานิพจน์ทั่วไป
วิธีการปาดสายทับทิม
วิธีหนึ่งในการใส่สตริงคือการใช้ rjust
วิธีที่มีสองอาร์กิวเมนต์:
binary_string = "1101" binary_string.rjust(8, "0") # "00001101"
หากคุณต้องการแป้นชิดขวา คุณสามารถใช้ ljust
:
binary_string = "1111" binary_string.ljust(8, "0") # "11110000"
เปรียบเทียบสตริงที่ไม่สนใจกรณี
เนื่องจากการเปรียบเทียบสตริงต้องคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ คุณจึงต้องแน่ใจว่าสตริงทั้งสองที่คุณกำลังเปรียบเทียบอยู่ในกรณีเดียวกัน
วิธีทั่วๆ ไปคือทำให้สมการทั้งสองข้าง downcase
หรือ upcase
.
ตัวอย่าง :
lang1 = "ruby" lang2 = "Ruby" lang1.upcase == lang2.upcase
นอกจากนี้ยังมี casecmp?
วิธีเปรียบเทียบแบบคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ แต่ไม่ค่อยได้ใช้
ยึดตามตัวอย่างข้างต้น
วิธีการตัดแต่งสตริงและลบช่องว่าง
เมื่ออ่านข้อมูลจากไฟล์หรือเว็บไซต์ คุณอาจพบว่ามีช่องว่างในสตริงเพิ่มขึ้น
คุณสามารถลบพื้นที่ส่วนเกินนั้นด้วย strip
วิธีการ:
extra_space = " test " extra_space.strip # "test"
หากคุณต้องการลบช่องว่างสีขาวจากด้านใดด้านหนึ่ง (ซ้าย / ขวา) คุณสามารถใช้ lstrip
&rstrip
วิธีการแทน
คำนำหน้าสตริงและส่วนต่อท้าย
คุณสามารถใช้ start_with?
วิธีการตรวจสอบว่าสตริงเริ่มต้นด้วยคำนำหน้าเฉพาะหรือไม่
นี่คือตัวอย่าง :
string = "ruby programming" string.start_with? "ruby" # true
นอกจากนี้ยังมี end_with?
วิธีการ:
string = "ruby programming" string.end_with? "programming" # true
นอกจากนี้ Ruby 2.5 ยังแนะนำ delete_prefix
&delete_suffix
วิธีที่อาจเป็นประโยชน์กับคุณ
นี่คือตัวอย่าง :
string = "bacon is expensive" string.delete_suffix(" is expensive") # "bacon"
แปลงสตริงเป็นอาร์เรย์ของอักขระ
การแยกสตริงและแยกออกเป็นอาร์เรย์ของอักขระทำได้ง่ายด้วย split
วิธีการ
ตัวอย่าง :
string = "a b c d" string.split # ["a", "b", "c", "d"]
โดยค่าเริ่มต้น split
จะใช้ช่องว่างเป็นตัวคั่น แต่คุณสามารถส่งผ่านอาร์กิวเมนต์ในวิธีนี้เพื่อระบุตัวคั่นอื่นได้
วิธีแบ่งรายการค่าที่คั่นด้วยเครื่องหมายจุลภาค (CSV):
csv = "a,b,c,d" string.split(",") # ["a", "b", "c", "d"]
แต่ถ้าคุณทำงานกับข้อมูล CSV โดยเฉพาะ คุณอาจต้องการพิจารณาใช้คลาส CSV จากไลบรารีมาตรฐาน ชั้นเรียนนี้ทำสิ่งต่างๆ ได้ เช่น การอ่านส่วนหัวของคอลัมน์ คุณจึงทำสิ่งต่างๆ ได้ง่ายขึ้น
แปลงอาร์เรย์เป็นสตริง
หากคุณต้องการนำอาร์เรย์ของสตริงและรวมสตริงเหล่านี้เป็นสตริงขนาดใหญ่ คุณสามารถใช้ join
วิธีการ
ตัวอย่าง :
arr = ['a', 'b', 'c'] arr.join # "abc"
นอกจากนี้ยังสามารถส่งอาร์กิวเมนต์ไปยัง join
อาร์กิวเมนต์นี้เป็นตัวคั่นอักขระ
ตัวอย่าง :
arr = ['a', 'b', 'c'] arr.join("-") # "a-b-c"
แปลงสตริงเป็นจำนวนเต็ม
หากคุณต้องการแปลงสตริงเช่น "49"
ลงในจำนวนเต็ม 49
คุณสามารถใช้ to_i
วิธีการ
ตัวอย่าง :
"49".to_i
สังเกตว่าถ้าคุณลองสิ่งนี้ด้วยสตริงที่ไม่มีตัวเลข คุณจะได้รับ 0
.
ตัวอย่าง :
"a".to_i # 0
ตรวจสอบว่าสตริงเป็นตัวเลขหรือไม่
คุณต้องการที่จะรู้ว่าสตริงประกอบด้วยตัวเลขเท่านั้นหรือไม่
คุณทำได้ :
"123".match?(/\A-?\d+\Z/) # true "123bb".match?(/\A-?\d+\Z/) # false
หมายเหตุ :
match?
วิธีการถูกนำมาใช้ใน Ruby 2.4 คุณสามารถใช้match
(ไม่มีเครื่องหมายคำถาม) ในเวอร์ชันเก่า
รหัสนี้ใช้นิพจน์ทั่วไป ให้ฉันแปลให้คุณ:
“ตั้งแต่เริ่มต้นสตริง (\A
) ตรวจสอบว่ามีเส้นประเสริมหรือไม่ (-?
สำหรับจำนวนลบ) ตรวจสอบให้แน่ใจว่ามีตัวเลขอยู่ในนั้น (\d+
) &ไม่มีอะไรอื่นจนกว่าจะสิ้นสุดสตริง (\Z
)”
วิธีการต่อท้ายตัวละคร
คุณสามารถสร้างสตริงขนาดใหญ่จากสตริงที่เล็กกว่าได้โดยการผนวกอักขระเข้ากับสตริงที่มีอยู่ เรายังเรียกสิ่งนี้ว่า การต่อสตริง .
นี่คือวิธีการทำโดยใช้ <<
วิธีการ:
string = "" string << "hello" string << " " string << "there" # "hello there"
อย่าใช้ +=
สำหรับการต่อสตริงเพราะจะสร้างสตริงใหม่ทุกครั้งซึ่งไม่เป็นผลดีต่อประสิทธิภาพ!
วนซ้ำอักขระของสตริงใน Ruby
บางครั้งการทำงานกับอักขระแต่ละตัวของสตริงก็มีประโยชน์
วิธีหนึ่งในการทำเช่นนั้นคือการใช้ each_char
วิธีการ:
"rubyguides".each_char { |ch| puts ch }
คุณยังสามารถใช้ chars
วิธีการแปลงสตริงเป็นอาร์เรย์ของอักขระ จากนั้นคุณสามารถใช้ each
ในอาร์เรย์นี้เพื่อวนซ้ำ
ตัวอย่าง :
array_of_characters = "rubyguides".chars # ["r", "u", "b", "y", "g", "u", "i", "d", "e", "s"]
วิธีการแปลงสตริงเป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็กใน Ruby
หากคุณต้องการแปลงสตริงเป็นตัวพิมพ์ใหญ่ทั้งหมด คุณสามารถใช้ upcase
วิธีการ
ตัวอย่าง :
"abcd".upcase # "ABCD"
และถ้าคุณต้องการแปลงเป็นตัวพิมพ์เล็ก คุณสามารถใช้ downcase
วิธีการ
ตัวอย่าง :
"ABCD".downcase # "abcd"
วิธีการสร้างสตริงหลายบรรทัด
คุณสร้างสตริงหลายบรรทัดได้ 2 วิธี
หนึ่งคือการใช้ heredocs:
b = <<-STRING aaa bbb ccc STRING
และอีกอย่างคือการใช้ %Q
:
a = %Q(aaa bbb ccc )
วิธีการแทนที่ข้อความภายในสตริงโดยใช้วิธี Gsub
หากคุณต้องการแทนที่ข้อความภายในสตริง ให้ใช้วิธี gsub
มาแทนที่คำว่า "dogs" ด้วย "cats":
string = "We have many dogs" string.gsub("dogs", "cats") # "We have many cats"
หากคุณต้องการลบสตริง ให้ใช้สตริงว่าง เป็นอาร์กิวเมนต์ที่ 2
ตัวอย่าง :
string = "abccc" string.gsub("c", "") # "ab"
ตอนนี้ :
gsub
method คืนค่าสตริงใหม่
หากคุณต้องการใช้การเปลี่ยนแปลงกับสตริงดั้งเดิม คุณสามารถใช้ gsub!
วิธีการ
เมธอด gsub ยังใช้นิพจน์ทั่วไปเป็นอาร์กิวเมนต์เพื่อให้คุณสามารถแทนที่รูปแบบแทนคำที่แน่นอนได้
นี่คือตัวอย่าง :
string = "We have 3 cats" string.gsub(/\d+/, "5") # "We have 5 cats"
แทนที่ตัวเลขทั้งหมด (\d+
) ในสตริงที่มีตัวเลข 5
.
อีกวิธีหนึ่งในการใช้วิธีนี้ด้วยการบล็อก:
title = "the lord of the rings" title.gsub(/\w+/) { |word| word.capitalize } # "The Lord Of The Rings"
แล้ว gsub
. ล่ะ vs sub
?
เอาล่ะ sub
เหมือนกับ gsub
แต่จะแทนที่เฉพาะนัดแรกเท่านั้น
Gsub แทนที่การแข่งขันทั้งหมด
วิธีการลบอักขระตัวสุดท้ายออกจากสตริง
หากคุณกำลังขอให้ผู้ใช้ป้อนข้อมูล (โดยใช้วิธี Kernel#gets) คุณจะมีอักขระขึ้นบรรทัดใหม่ (\n
) ที่ส่วนท้ายของสตริง ซึ่งจะป้องกันไม่ให้คุณเปรียบเทียบสตริงโดยตรง
ตัวอย่าง :
puts "What's your name?" name = gets # type something...
วิธีที่ดีที่สุดในการลบอักขระขึ้นบรรทัดใหม่นั้น (\n
) คือ ใช้วิธี chomp .
ตัวอย่าง :
name = gets.chomp
เนื่องจาก Ruby 2.3 วิธี chomp ใช้อาร์กิวเมนต์ที่เป็นตัวเลือกที่ให้คุณลบอักขระที่คุณต้องการลบได้
ตัวอย่าง :
"abcd?".chomp("?") # "abcd"
และถ้าไม่มีอักขระนั้นก็จะส่งคืนสตริงเดิม
วิธีการเปลี่ยนการเข้ารหัสสตริง
สตริงจะถูกจัดเก็บเป็นลำดับของไบต์ โดยจะเปลี่ยนเป็นอักขระที่คุณเห็นตามการเข้ารหัส
ตัวอย่างเช่น ตัวเลข 65 ในการเข้ารหัส ASCII แสดงถึงตัวอักษร "A"
แต่ยังมีการเข้ารหัสที่ซับซ้อนมากขึ้น เช่น UTF-8 ซึ่งช่วยให้คุณแสดงอักขระจากภาษาต่างๆ (จีน ฯลฯ) และแม้แต่อีโมจิได้
หากต้องการค้นหาการเข้ารหัสปัจจุบันสำหรับสตริง คุณสามารถใช้ encoding
วิธีการ
"abc".encoding # Encoding:UTF-8
เมื่ออ่านไฟล์จากดิสก์หรือดาวน์โหลดข้อมูลบางส่วนจากเว็บไซต์ คุณอาจประสบปัญหาในการเข้ารหัส
คุณมักจะแก้ไขปัญหานั้นได้ด้วยการบังคับใช้ encoding
.
ถูกใจสิ่งนี้ :
"abc".force_encoding("UTF-8")
นับตัวละคร
คุณสามารถนับจำนวนครั้งที่อักขระปรากฏในสตริงโดยใช้ count
วิธีการ
ตัวอย่าง:
str = "aaab" str.count("a") # 3 str.count("b") # 1
สรุป
คุณได้เรียนรู้เกี่ยวกับวิธีสตริง เช่นเดียวกับการรวมและแยกเพื่อแยกสตริงออกเป็นอาร์เรย์ gsub เพื่อแทนที่ข้อความภายในสตริง &แถบเพื่อตัดพื้นที่สีขาวส่วนเกินออก
เนื่องจากคุณอาจต้องการอ้างอิงหน้านี้ในภายหลัง อย่าลืมบุ๊กมาร์กและแชร์กับเพื่อน Ruby ของคุณทุกคน 🙂
ขอบคุณสำหรับการอ่าน!