Elm-এ টেক্সট উপস্থাপনার মূল ভিত্তি হলো ক্যারেক্টার ও স্ট্রিং। স্ট্রিংকে ক্যারেক্টারের অ্যারে হিসেবে ভাবা যায়, আর List-এর বেশিরভাগ ফাংশনেরই সমতুল্য ফাংশন String মডিউলে রয়েছে।
Char টাইপ একক কোটেশনে লেখা একটি একক ইউনিকোড ক্যারেক্টার বোঝায়, যেমন 'a'।
Char মডিউলে একটি ক্যারেক্টারের গুণাবলি পরীক্ষা করার জন্য প্রেডিকেট ফাংশন (Char -> Bool) আছে: isUpper, isLower, isAlpha এবং isAlphaNum
মডিউলটি আবার একটি ক্যারেক্টার রূপান্তর করার ফাংশনও দেয়: toUpper, toLower, toLocaleUpper, toLocaleLower, আর toCode ও fromCode দিয়ে তার সংখ্যাসূচক ইউনিকোড মানে (Int) যাওয়া-আসার ফাংশন।
String টাইপ দক্ষ স্ট্রিং ম্যানিপুলেশনের জন্য একটি বিল্ট-ইন উপস্থাপনা দেয় এবং যেকোনো ইউনিকোড ক্যারেক্টারের ক্রম প্রকাশ করতে পারে, যেমন "this is an Elm string."।
মাল্টি-লাইন স্ট্রিং তিনটি ডাবল কোট দিয়ে লেখা হয় এবং এতে এস্কেপ না করা কোট ও নিউলাইন থাকতে পারে।
"""
This is a multiline string.
All line-breaks and whitespace,
are preserved.
"""
String মডিউলে নিচের টেবিলে সংক্ষেপে দেওয়া সব ফাংশন আছে।
সবচেয়ে বেশি ব্যবহৃত কিছু ফাংশন:
cons : Char -> String -> String একটি স্ট্রিংয়ের শুরুতে একটি ক্যারেক্টার যোগ করে।
cons 'T' "he truth is out there"
--> "The truth is out there"
(++): String -> String -> String দুটি স্ট্রিং যুক্ত করে।
"butter" ++ "fly"
--> "butterfly"
split : String -> String -> List String প্রদত্ত সেপারেটরে একটি স্ট্রিংকে স্ট্রিংয়ের অ্যারেতে ভাগ করে।
split ";" "cat;dog;cow"
--> ["cat", "dog", "cow"]
join : String -> List String -> String প্রদত্ত একটি সেপারেটর দিয়ে স্ট্রিংয়ের একটি অ্যারে সংযুক্ত করে।
join "a" ["H", "w", "ii", "n"]
--> "Hawaiian"
replace : String -> String -> String -> String প্রদত্ত একটি সাবস্ট্রিংয়ের সব উপস্থিতি প্রতিস্থাপন করে।
replace "Hello" "Goodbye cruel" "Hello world."
--> "Goodbye cruel world."
length : String -> Int একটি স্ট্রিংয়ে ক্যারেক্টারের সংখ্যা রিটার্ন করে।
length "Hello world."
--> 12
toInt : String -> Maybe Int একটি স্ট্রিংকে Just Int-এ রূপান্তর করার চেষ্টা করে, আর ভুল ফরম্যাটের স্ট্রিংয়ের জন্য Nothing রিটার্ন করে।
toInt "-42"
--> Just -42
contains : String -> String -> Bool দ্বিতীয় স্ট্রিংটিতে প্রথমটি আছে কিনা পরীক্ষা করে।
contains "the" "theory"
--> True
map : (Char -> Char) -> String -> String স্ট্রিংয়ের প্রতিটি Char-এ প্রদত্ত একটি ফাংশন প্রয়োগ করে।
খেয়াল করুন, দেওয়া ফাংশনটি অবশ্যই Char থেকে Char-এ একটি ম্যাপিং হতে হবে।
map (\c -> if c == '/' then '.' else c) "a/b/c"
--> "a.b.c"
| ম্যানিপুলেশন | সাবস্ট্রিং | পরীক্ষা | রূপান্তর | হায়ার অর্ডার |
|---|---|---|---|---|
reverse |
slice |
length |
toInt |
map |
repeat |
left |
isEmpty |
fromInt |
filter |
replace |
right |
contains |
toFloat |
foldl |
append |
dropLeft |
startsWith |
fromFloat |
foldr |
concat |
dropRight |
indexes |
toList |
any |
split |
fromList |
all |
||
join |
fromChar |
|||
words |
||||
lines |
||||
cons |
||||
uncons |
এই অনুশীলনীতে আপনি কিছু ইউটিলিটি ফাংশনের একটি আংশিক সেট তৈরি করবেন, যা একজন ডেভেলপারকে আইডেন্টিফায়ারের নাম পরিষ্কার করতে সাহায্য করবে।
৫টি কাজে ধীরে ধীরে আপনি clean ফাংশনটি তৈরি করবেন।
একটি বৈধ আইডেন্টিফায়ার শূন্য বা তার বেশি অক্ষর ও আন্ডারস্কোর নিয়ে গঠিত।
যদি clean ফাংশনে একটি খালি স্ট্রিং পাস করা হয়, তাহলে একটি খালি স্ট্রিং রিটার্ন করা উচিত।
যেকোনো স্পেসকে আন্ডারস্কোর দিয়ে প্রতিস্থাপন করতে একটি clean1 ফাংশন তৈরি করুন। এটি শুরুর ও শেষের স্পেসের ক্ষেত্রেও প্রযোজ্য।
clean1 "my Id"
--> "my___Id"
আগের ফাংশনটি যা করে তা সব করতে এবং কমন কন্ট্রোল ক্যারেক্টারগুলোকে (\n, \t ও \r) "[CTRL]" স্ট্রিং দিয়ে প্রতিস্থাপন করতে clean2 তৈরি করুন।
clean2 "my\nId"
--> "my[CTRL]Id",
আগের ফাংশনটি যা করে তা সব করতে এবং kebab-case থেকে camelCase-এ রূপান্তর করতে clean3 তৈরি করুন।
clean3 "à-ḃç"
--> "àḂç"
আগের ফাংশনটি যা করে তা সব করতে এবং সমস্ত ডিজিট বাদ দিতে clean4 তৈরি করুন।
clean4 "123"
--> ""
সবশেষে, আগের ফাংশনটি যা করে তা সব করতে এবং 'α' থেকে 'ω' পরিসরের যেকোনো গ্রিক অক্ষর বাদ দিতে clean তৈরি করুন।
clean "My Οβιεγτ Finder"
--> "My_Ο_Finder"
Exercism-এ সাইন আপ করুন, Elm ট্র্যাকের 28টি কনসেপ্ট110টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।