מחיקת תווים התואמים לתבנית

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 למחרוזות. פרטי מימוש כוללים עבודה עם מבני נתונים ברמה נמוכה יותר כדי לטפל ביעילות במחרוזות גדולות.

ראה גם