การดึงข้อมูลย่อยออกมา

Haskell:
การดึงข้อมูลย่อยออกมา

วิธีทำ:

ใน Haskell, คุณสามารถตัดและแยกสตริงด้วยฟังก์ชันที่มีอยู่แล้วในตัวอย่างเช่น take, drop, และ substring (จาก Data.Text)

import Data.Text (Text, pack, unpack, take, drop)

-- ตัวอย่างสตริงของเรา
let exampleStr = "Haskell makes sense!"

-- การเอาอักขระ 7 ตัวแรก
print $ unpack (take 7 (pack exampleStr)) -- "Haskell"

-- การทิ้งอักขระ 8 ตัวแรก
print $ unpack (drop 8 (pack exampleStr)) -- "makes sense!"

-- ฟังก์ชันที่กำหนดเองเพื่อดึงส่วนย่อยของสตริงโดยตำแหน่งและความยาว
substring :: Int -> Int -> Text -> Text
substring start length = take length . drop start

-- การดึง "makes" (เริ่มจากตำแหน่ง 8, ความยาว 5)
print $ unpack (substring 8 5 (pack exampleStr)) -- "makes"

ตัวอย่างผลลัพธ์:

"Haskell"
"makes sense!"
"makes"

ทำความเข้าใจลึกลงไป

การวิเคราะห์ส่วนย่อยของสตริงเป็นส่วนหนึ่งของ Haskell มานานแล้ว ตั้งแต่แรกเริ่มมันพึ่งพาลิสต์ เนื่องจากสตริงเป็นลิสต์ของอักขระ ประสิทธิภาพไม่ดีเท่าไหร่ Data.Text มาพร้อมกับการทำงานกับสตริงอย่างมีประสิทธิภาพ

ทางเลือกอื่น ๆ มีลิสต์การดำเนินการ, regex และไลบรารีการแยกวิเคราะห์ การดำเนินการลิสต์ง่ายกว่าแต่ช้ากว่าสำหรับสตริงขนาดใหญ่ Regex มีประสิทธิภาพแต่เกินความจำเป็นสำหรับงานง่าย ๆ ไลบรารีพาร์สเหมาะสำหรับการวิเคราะห์ที่ซับซ้อนแต่ก็สามารถจัดการกับส่วนย่อยของสตริงได้เช่นกัน

การทำงานฟังก์ชันส่วนย่อยของสตริงที่กําหนดเองใน Haskell สามารถทำได้อย่างง่ายดายโดยใช้ take และ drop จาก Data.Text ที่ให้การจัดการสตริงที่เร็วกว่าการดำเนินการโดยอิงลิสต์

ดูเพิ่มเติม