วิธีแปลงสตริง 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 อย่างมีประสิทธิภาพ ด้วยเพียงไม่กี่บรรทัดของโค้ด คุณสามารถจัดการกับโครงสร้างข้อมูลได้อย่างง่ายดาย

ดังนั้นครั้งต่อไปที่คุณเจอสตริงที่มีรูปแบบเช่นในตัวอย่างของเรา จำขั้นตอนเหล่านี้ไว้ และคุณจะสามารถแปลงมันเป็นอาร์เรย์ที่ใช้งานได้อย่างรวดเร็ว!