הסרת מרכאות ממחרוזת

Clojure:
הסרת מרכאות ממחרוזת

איך לעשות:

ב-Clojure, מחרוזות הן בלתי שינויות, אז כשאנחנו מדברים על “להסיר מרכאות”, אנו למעשה מדברים על יצירת מחרוזת חדשה ללא מרכאות. הנה הדרך באמצעות clojure.string/replace:

(require '[clojure.string :as str])

; בואו ניפטר מהמרכאות הכפולות
(defn remove-double-quotes [s]
  (str/replace s #"\"" ""))

; ונגרש את המרכאות היחידות
(defn remove-single-quotes [s]
  (str/replace s #"\'" ""))

; שימוש לדוגמה:
(remove-double-quotes "\"שלום, עולם!\"") ; => "שלום, עולם!"
(remove-single-quotes "'שלום, עולם!'")   ; => "שלום, עולם!"

רוצה לטפל הן במרכאות הכפולות והן ביחידות במכה אחת? תראו את זה:

(defn remove-quotes [s]
  (str/replace s #"[\"\']" ""))

; שימוש לדוגמה:
(remove-quotes "\"שלום, 'Clojure' עולם!\"") ; => "שלום, Clojure עולם!"

צלילה לעומק

בימי קדם, כשהנתונים היו בולטאניים יותר מחדרו של ילד, מרכאות במחרוזות היו הנורמה לציון טקסט. אבל ככל שמדעי המחשב התפתחו, מרכאות הפכו ליותר מסתם סימני הפרדת טקסט - הן קיבלו תפקידים תחביריים בשפות תכנות.

Clojure, עם המורשת ה-Lisp שלה, אינה משתמשת במרכאות באותה הדרך שבה ייתכן ששפות אחרות עושות. בוודאי שהן משמשות לציון מחרוזות, אבל להן גם יש תפקיד מיוחד ביצירת ליטרלים. בכל מקרה, הסרת מרכאות ממחרוזות נותרה משימה לאורך הזמן.

למה שלא פשוט נחתוך את קצוות המחרוזת? ובכן, זה מניח שהמרכאות שלך תמיד מחובקות את ההתחלה והסוף של המחרוזת שלך כמו זוג סבים אוהבים יתר על המידה. נתונים בעולם האמיתי הם מורכבים יותר. כאן נכנסים ביטויים רגולריים (regular expressions), שמאפשרים לך לזהות את המרכאות בלי תלות במיקום שלהם.

אלטרנטיבות? בטח, אתה יכול להתחכם עם subs, trim, triml, trimr, או אפילו טרנסדוסרים אם אתה רוצה להרשים. אבל replace עם ביטויים רגולריים זה כמו להביא חרב לייזר לקרב סכינים - זה פותר את הבעיה בדיוק.

ראה גם

אם המוח שלך גודל לעוד נפלאות של טיפול במחרוזות ב-Clojure, הפירורי לחם האלה עשויים לעזור:

אל תעצור רק בהסרת מרכאות. יש עולם שלם של כישופי מחרוזות שם בארץ Clojure בהמתנה להתגלות.