Clojure:
מחיקת תווים התואמים לתבנית
איך לעשות:
הנה דוגמה למחיקת תווים באמצעות RegExp ב-Clojure:
(re-seq #"[^\d]" "abc123!") ; שומר רק על המספרים
;; => ("a" "b" "c" "!")
אולי תרצו גם להסיר רווחים, נקודות או תווים מיוחדים:
(clojure.string/replace "Hello, World! 123." #"[^\w\s]" "")
;; => "Hello World 123"
מחקת אותיות מיוחדות כמו סימני פיסוק, נקודות ופסיקים:
(clojure.string/replace "This is a test. Do not panic!" #"[.,!]" "")
;; => "This is a test Do not panic"
עיון מעמיק
מחיקת תווים שתואמים לדפוס היא רעיון ישן כמעט כמו התכנות עצמו. מבוסס על ביטויים רגולריים (Regular Expressions), שהיו חלק מהפקד של כלי UNIX מהשנות ה-70, כמו sed או grep. ב-Clojure משתמשים בביטויים רגולריים כדי לעבוד עם טקסט בצורה חזקה וגמישה. ניתן להפעיל שינויים על מחרוזות בכמה שורות פשוטות של קוד.
אלטרנטיבות לביטויים רגולריים כוללות פונקציות מחרוזת מובנות, כמו .indexOf
, .substring
או .split
, אבל אלה לא תמיד יעילות כמו ביטוי רגולרי מורכב.
לגבי פרטי היישום, ב-Clojure, clojure.string/replace
היא הפונקציה הנפוצה למחיקת תווים. היא מקבלת מחרוזת, פטרן (ביטוי רגולרי) והחלפה (שיכולה להיות מחרוזת ריקה כדי למחוק).