Οι χαρακτήρες και οι συμβολοσειρές αποτελούν τη βάση για την αναπαράσταση κειμένου στην Elm.
Οι συμβολοσειρές μπορούν να ιδωθούν ως λίστες χαρακτήρων και οι περισσότερες συναρτήσεις της List έχουν το αντίστοιχό τους στη μονάδα String.
Ο τύπος Char αναπαριστά έναν μόνο χαρακτήρα unicode με μονά εισαγωγικά, π.χ. 'a'.
Η μονάδα Char παρέχει συναρτήσεις κατηγορήματος (Char -> Bool) για να ελέγχεις ιδιότητες ενός χαρακτήρα: isUpper, isLower, isAlpha και isAlphaNum
Η μονάδα παρέχει επίσης συναρτήσεις για τη μετατροπή ενός χαρακτήρα toUpper, toLower, toLocaleUpper, toLocaleLower, καθώς και για τη μετατροπή από και προς την αριθμητική τιμή unicode (Int) με τις toCode και fromCode.
Ο τύπος String παρέχει μια ενσωματωμένη αναπαράσταση για αποδοτικό χειρισμό συμβολοσειρών και μπορεί να αναπαραστήσει οποιαδήποτε ακολουθία χαρακτήρων unicode, π.χ. "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.
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 ώστε να κάνει ό,τι κάνει η προηγούμενη συνάρτηση και να μετατρέπει το kebab-case σε camelCase.
clean3 "à-ḃç"
--> "àḂç"
Υλοποίησε τη συνάρτηση clean4 ώστε να κάνει ό,τι κάνει η προηγούμενη συνάρτηση και να παραλείπει όλα τα ψηφία.
clean4 "123"
--> ""
Τέλος, υλοποίησε τη συνάρτηση clean ώστε να κάνει ό,τι κάνει η προηγούμενη συνάρτηση και να παραλείπει οποιοδήποτε ελληνικό γράμμα στο εύρος από 'α' έως 'ω'.
clean "My Οβιεγτ Finder"
--> "My_Ο_Finder"
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Elm με 28 έννοιες110 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.