Haskell:
מחיקת תווים התואמים לתבנית
איך לעשות:
ב-Haskell, ניתן להשתמש בפונקציות סטנדרטיות כמו filter
למימוש התהליך:
import Data.Char (isDigit)
-- פונקציה למחיקת כל הספרות מתוך מחרוזת
deleteDigits :: String -> String
deleteDigits = filter (not . isDigit)
main :: IO ()
main = putStrLn $ deleteDigits "He7ll9o W0or6ld" -- תוצאה: Hello World
ניתן גם להגדיר דפוסי regex ולהשתמש בם למחיקת תווים:
import Text.Regex.TDFA ((=~))
-- פונקציה למחיקת כל האותיות הגדולות מתוך מחרוזת
deleteUpperCase :: String -> String
deleteUpperCase str = str =~ "[^A-Z]" :: String
main :: IO ()
main = putStrLn $ deleteUpperCase "Hello World" -- תוצאה: ello orld
עיון מעמיק
היסטורית, מחיקת תוים תואמי דפוס נוצרה בכדי להתמודד עם טקסטים גולמיים ועלובים. אם פעם נעשה שימוש בכלים כמו sed
וawk
בסביבת יוניקס, היום לשפות תכנות מודרניות כמו Haskell יש ספריות עשירות המאפשרות יישום חלק ויעיל של מניפולציות טקסט.
כלים אלטרנטיביים כוללים שימוש בפונקציות כמו map
, concatMap
, או פונקציות ב-slice ו-append למחרוזות. פרטי מימוש כוללים עבודה עם מבני נתונים ברמה נמוכה יותר כדי לטפל ביעילות במחרוזות גדולות.