วิธีแปลงสตริง Ruby ที่มีวงเล็บเป็น Array
หากคุณกำลังทำงานกับ Ruby และพบว่าสตริงที่มีรูปแบบด้วยวงเล็บ คุณอาจพบว่าต้องการแปลงสตริงนั้นเป็นอาร์เรย์หรือแม้แต่เป็นอาร์เรย์ที่ซ้อนกัน ในโพสต์นี้เราจะลงลึกไปยังตัวอย่างเฉพาะที่สตริงที่มีรูปแบบเช่นนี้: [[this, is],[a, nested],[array]]
จะต้องถูกแปลงเป็นอาร์เรย์ที่สอดคล้องกัน: [['this','is'],['a','nested'],['array']]
ทำความเข้าใจกับปัญหา
สตริงที่คุณมีอาจดูตรงไปตรงมา แต่การแยกมันออกเป็นรูปแบบอาร์เรย์ที่ใช้งานได้นั้นอาจทำได้ยาก ความท้าทายเกิดจากการจัดโครงสร้างขององค์ประกอบและวิธีที่ Ruby ตีความมัน เพื่อแก้ปัญหานี้ เราสามารถใช้ YAML ซึ่งเป็นภาษาสำหรับการจัดระเบียบข้อมูลที่ Ruby สามารถจัดการได้ง่าย
วิธีการทีละขั้นตอน
ในการแปลงสตริงของคุณเป็นอาร์เรย์ ให้ทำตามขั้นตอนเหล่านี้:
1. เตรียมสตริงของคุณ
สตริงต้นฉบับของคุณอาจไม่มีรูปแบบที่ถูกต้องสำหรับ YAML โดยเฉพาะ YAML ต้องการให้มีช่องว่างหลังจากเครื่องหมายจุลภาค ดังนั้นเราจำเป็นต้องอัปเดตให้เป็น [[this, is], [a, nested], [array]]
นี่คือวิธีทำใน Ruby:
str = "[[this, is],[a, nested],[array]]"
str.gsub!(/(\,)(\S)/, "\\1 \\2")
บรรทัดของรหัสนี้จะทำการปรับเปลี่ยนสตริงต้นฉบับ โดยการใส่ช่องว่างหลังจากเครื่องหมายจุลภาคทุกตัวถ้ามันถูกตามด้วยอักขระที่ไม่ใช่ช่องว่างโดยตรง
2. โหลดไลบรารี YAML
เพื่อใช้ฟังก์ชันการทำงานของ YAML ใน Ruby เราต้องการให้เรียกไลบรารี YAML ใส่บรรทัดต่อไปนี้ที่ต้นของโค้ดของคุณ:
require 'yaml'
3. แปลงสตริงเป็นอาร์เรย์
เมื่อสตริงของคุณจัดรูปแบบถูกต้องและคุณได้โหลดไลบรารี YAML แล้ว คุณสามารถแปลงสตริงนี้เป็นอาร์เรย์ได้ด้วยคำสั่งง่ายๆ:
newarray = YAML::load(str)
โค้ดสุดท้าย
เมื่อรวมทุกอย่างเข้าไว้ด้วยกัน โค้ด Ruby สุดท้ายของคุณจะมีลักษณะดังนี้:
require 'yaml'
str = "[[this, is],[a, nested],[array]]"
str.gsub!(/(\,)(\S)/, "\\1 \\2") # เพิ่มช่องว่างหลังเครื่องหมายจุลภาค
newarray = YAML::load(str) # แปลงเป็นอาร์เรย์
puts newarray.inspect # ผลลัพธ์ => [['this', 'is'], ['a', 'nested'], ['array']]
สรุป
การแปลงสตริงที่มีวงเล็บให้เป็นอาร์เรย์ใน Ruby เป็นเรื่องที่ตรงไปตรงมา หากคุณจัดการกับปัญหาการจัดรูปแบบและใช้ไลบรารี YAML อย่างมีประสิทธิภาพ ด้วยเพียงไม่กี่บรรทัดของโค้ด คุณสามารถจัดการกับโครงสร้างข้อมูลได้อย่างง่ายดาย
ดังนั้นครั้งต่อไปที่คุณเจอสตริงที่มีรูปแบบเช่นในตัวอย่างของเรา จำขั้นตอนเหล่านี้ไว้ และคุณจะสามารถแปลงมันเป็นอาร์เรย์ที่ใช้งานได้อย่างรวดเร็ว!