חילוץ תת-מחרוזות

Haskell:
חילוץ תת-מחרוזות

איך לעשות:

import Data.Text (Text)
import qualified Data.Text as T

-- חילוץ תת-מחרוזת ממיקום התחלתי עד סוף
substringFrom :: Int -> Text -> Text
substringFrom start text = T.drop start text

-- חילוץ תת-מחרוזת מהתחלה ועד מיקום סופי
substringTo :: Int -> Text -> Text
substringTo end text = T.take end text

-- חילוץ תת-מחרוזת בעזרת טווח
substring :: Int -> Int -> Text -> Text
substring start end text = T.take (end - start) (T.drop start text)

-- דוגמה לשימוש
main :: IO ()
main = do
  let text = T.pack "שלום, עולם!"
  putStrLn . T.unpack $ substringFrom 6 text  -- "עולם!"
  putStrLn . T.unpack $ substringTo 5 text    -- "שלום"
  putStrLn . T.unpack $ substring 7 12 text  -- "עולם"

תוצאת הקוד: ביצוע פונקציות החילוץ על המחרוזת “שלום, עולם!” יחזיר “עולם!”, “שלום”, ו"עולם" בהתאמה.

צלילה עמוקה

Haskell משתמש בפונקציות חילוץ מחרוזות מהספריה Data.Text כדי להימנע מעבודה עם מחרוזות מטיפוס String, שהן פחות יעילות. ההיסטוריה של פונקציות החילוץ הופכת את עבודת הטקסט לפשוטה יותר ב-Haskell. ישנם גם שיטות אלטרנטיביות כמו פרסור (parsing) וביטויים רגולריים, אך לעיתים הפונקציות המובנות עושות את העבודה נאמנה ובמהירות. דבר נוסף שחשוב לדעת הוא שחילוץ תת-מחרוזות צריך להיעשות תוך כדי התחשבות במיקומים שמאחרי הגבולות שאתה מגדיר, כדי להימנע משגיאות זמן ריצה.

ראה גם