Haskell:
Merkkijonosta lainausmerkkien poistaminen
Kuinka:
Haskellissa voimme luoda funktion, joka poistaa kaikki lainausmerkit annetusta merkkijonosta. Se on kuin sanoisimme lainausmerkeille, että häipykää, ja varmistaisimme, että ne ymmärtävät vihjeen.
import Data.List (intercalate)
import Data.Char (isPunctuation)
removeQuotes :: String -> String
removeQuotes = filter (\c -> c /= '"' && c /= '\'')
main :: IO ()
main = do
let stringWithQuotes = "Haskell sanoi, \"Opiskellaanpa joitakin funktioita!\""
putStrLn $ removeQuotes stringWithQuotes
Esimerkkitulostus:
Haskell sanoi, Opiskellaanpa joitakin funktioita!
Syväsukellus
Olipa kerran aika, ennen kuin merkkijonot ohjelmoinnissa olivat yhtä yleisiä kuin kissavideot internetissä, tekstin käsittely oli hankalaa. Mutta kun ohjelmointikielet kehittyivät, merkkijonoista tuli olennainen osa koodaamista. Silti lainausmerkit säilyivät kaksiteräisenä miekkana – ne ovat olennaisia merkkijonojen määrittelyssä, mutta kiusankappaleina todellisina datoina.
Vaihtoehtoja? Sen sijaan, että huitaisisit kaikki lainausmerkit pois kuin kärpäset, voit olla valikoiva. Saatat haluta poistaa vain uloimmat lainausmerkit (klassinen trimmaus) tai käsitellä merkkijonon sisällä olevia paenneita lainausmerkkejä.
Toteutuksen osalta yllä oleva removeQuotes
-funktio käyttää lambdalla jokaisen merkin (c
) tarkistamista, onko se ärsyttävä lainausmerkki, ja suodattaa ne sen mukaisesti. Tämä on suoraviivainen lähestymistapa, mutta suurempien tekstien tai monimutkaisempien sääntöjen kohdalla saatat haluta tutkia jäsentäjäkirjastoja, kuten Parsec
, joka voi tarjota enemmän hienostuneisuutta ja voimaa tekstinkäsittelyyn.
Katso myös:
- Regex-rakastajille: Text.Regex.Posix
- Hellävarainen johdatus Haskellin merkkijonoihin: Learn You a Haskell for Great Good! - Starting Out