Az F# char típusa egy 16 bites érték, amely a szöveg legkisebb címezhető egységeit reprezentálja, és alapértelmezés szerint nem módosítható.
A char értékek literálként adhatók meg szimpla idézőjelek között:
let ch = 'A'
// => val ch: char = 'A'
A string karakterek sorozata.
Egy adott char a stringből (nulla alapú) indexeléssel kérhető le:
"Exercism"[4] // => 'c'
Ha végigmegyünk egy stringen, minden lépésben egy char-t kapunk.
A következő példa a kényelem kedvéért egy magasabb rendű függvényt és egy névtelen függvényt használ. Ezekkel a tanterv későbbi részében foglalkozunk részletesen, most azonban lényegében egy tömör módot adnak arra, hogy ciklust írjunk egy string karakterei fölött.
Seq.map (fun c -> c, int c) "F#" // => [('F', 70); ('#', 35)]
Ahogy fentebb látható, egy char átalakítható az int értékévé.
Ez más írásrendszereknél is működik (legalábbis néha):
Seq.map (fun c -> c, int c) "東京" // => [('東', 26481); ('京', 20140)]
A karakterek összehasonlításához a mögöttes Int16-ot használja:
'A' < 'D' // => true
Ezenkívül egy int is átalakítható char értékké:
char 77 // => 'M'
A System.Char könyvtár tartalmazza a .NET nyelvtől elvárható metódusok teljes készletét, például a nagybetűssé és kisbetűssé alakítást:
'a' |> System.Char.ToUpper // => 'A'
'Q' |> System.Char.ToLower // => 'q'
Ebben a feladatban segédfüggvények egy részét valósítod meg, hogy segíts egy fejlesztőnek megtisztítani az azonosítóneveket.
A 6 részfeladatban fokozatosan építed fel a transform függvényt, amely egyetlen karaktert alakít át, és a clean függvényt, amely stringeket alakít át.
Egy érvényes azonosító nulla vagy több betűből, aláhúzásjelből, kötőjelből, kérdőjelből és emojiból áll.
Ha üres stringet adsz át a clean függvénynek, akkor üres stringet kell visszaadnia.
Valósítsd meg a transform függvényt úgy, hogy a kötőjeleket aláhúzásjelre cserélje.
transform '-' // => "_"
Távolítsd el az összes whitespace karaktert. Ebbe beletartozik a szöveg elején és végén lévő whitespace is.
transform ' ' // => ""
Módosítsd a transform függvényt, hogy a camelCase-t kebab-case formátumra alakítsa
transform 'D' // => "-d"
Módosítsd a transform függvényt, hogy elhagyja a számjegy karaktereket.
transform '7' // => ""
Módosítsd a transform függvényt, hogy a „α” és „ω” közötti görög betűket lecserélje.
transform 'β' // => "?"
Valósítsd meg a clean függvényt, hogy ezeket a műveleteket egy teljes stringre alkalmazza.
A szabályokon kívül eső karaktereket változatlanul kell átengedni.
clean " a2b Cd-ω😀 " // => "ab-cd_?😀"
Ezt a témát a tanterv későbbi részében részletesen is tárgyaljuk.
Egyelőre hasznos lehet tudni, hogy létezik egy magasabb rendű függvény, a String.collect, amely char-ok gyűjteményét alakítja stringgé egy általad megadott függvény segítségével.
let transform ch = $"{ch}_"
String.collect transform "abc" // => "a_b_c_"
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) F# nyelvet 18 fogalom148 feladat segítségével, valódi emberi mentorálással, mindez ingyen.