«کاراکتر»های Clojure از نوع دادههای اولیهی java.lang.Character هستند و میتوانیم از طریق interop با متدهای کلاس Character آنها را دستکاری کنیم:
(Character/isDigit \2)
;;=> true
Clojure یک کتابخانهی قدرتمند پردازش رشته همراه دارد: clojure.string. این کار اغلب از interop طبیعیتر است.
در این تمرین، مجموعهای ناقص از روالهای کمکی را پیادهسازی میکنید که به یک برنامهنویس در پاکسازی اسم شناسهها کمک میکند.
در ۵ کار، بهتدریج تابع clean را میسازید. یک شناسهی معتبر از صفر یا چند حرف و زیرخط تشکیل میشود.
در همهی موارد، تضمین شده است که رشتهی ورودی nil نباشد. اگر رشتهی خالی به تابع داده شود، باید رشتهی خالی برگردانده شود.
توجه کنید که فراخوان باید از فراخوانی تابع با یک شناسهی خالی بپرهیزد، چون چنین شناسههایی بیاثرند.
تابع clean را طوری پیادهسازی کنید که هر فاصله را با زیرخط جایگزین کند. این موضوع برای فاصلههای ابتدا و انتهای رشته هم صدق میکند.
(clean "my Id")
;;=> "my___Id"
تابع clean را طوری تغییر دهید که کاراکترهای کنترلی را با رشتهی "CTRL" با حروف بزرگ جایگزین کند. یک کاراکتر زمانی کاراکتر کنترلی ISO به حساب میآید که کدش در بازهی «\u0000» تا «\u001F» یا در بازهی «\u007F» تا «\u009F» باشد.
(clean "my\u007FId")
;;=> "myCTRLId"
تابع clean را طوری تغییر دهید که kebab-case را به camelCase تبدیل کند.
(clean "à-ḃç")
;;=> "àḂç"
تابع clean را طوری تغییر دهید که هر کاراکتری را که حرف نیست حذف کند.
توجه: زیرخطها باید از مرحلهی قبل حفظ شوند.
(clean "1😀2😀3😀")
;; => ""
تابع clean را طوری تغییر دهید که هر حرف یونانی در بازهی «α» تا «ω» را حذف کند.
(clean "MyΟβιεγτFinder")
;;=> "MyΟFinder"