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 |
इस अभ्यास में आप उपयोगी फंक्शनों का एक छोटा समूह बनाएँगे, जिनकी मदद से एक डेवलपर आइडेंटिफायर के नाम साफ कर सकता है।
इन 5 कार्यों में आप धीरे-धीरे clean फंक्शन बनाते जाएँगे।
एक मान्य आइडेंटिफायर अक्षरों और अंडरस्कोर से बना होता है, और इनकी संख्या शून्य या उससे अधिक हो सकती है।
अगर clean फंक्शन को खाली स्ट्रिंग दी जाए, तो फंक्शन को भी खाली स्ट्रिंग लौटानी चाहिए।
कोई भी स्पेस अंडरस्कोर से बदलने के लिए clean1 फंक्शन बनाइए। यह शुरू और अंत में आने वाले स्पेस पर भी लागू होता है।
clean1 "my Id"
--> "my___Id"
clean2 बनाइए, जो पिछले फंक्शन का सारा काम करे और साथ ही आम कंट्रोल अक्षरों (\n, \t और \r) को "[CTRL]" स्ट्रिंग से बदल दे।
clean2 "my\nId"
--> "my[CTRL]Id",
clean3 बनाइए, जो पिछले फंक्शन का सारा काम करे और कबाब-केस को कैमलकेस में बदल दे।
clean3 "à-ḃç"
--> "àḂç"
clean4 बनाइए, जो पिछले फंक्शन का सारा काम करे और सारे अंक छोड़ दे।
clean4 "123"
--> ""
अंत में clean बनाइए, जो पिछले फंक्शन का सारा काम करे और 'α' से 'ω' तक के सारे ग्रीक अक्षर छोड़ दे।
clean "My Οβιεγτ Finder"
--> "My_Ο_Finder"
Exercism पर साइन अप कीजिए और Elm को 28 कॉन्सेप्ट110 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।