Fjerne anførselstegn fra en streng

Haskell:
Fjerne anførselstegn fra en streng

Hvordan:

I Haskell kan vi lage en funksjon som fjerner alle anførselstegn fra en gitt streng. Det er som å fortelle anførselstegnene å stikke av, og sørge for at de tar hintet.

import Data.List (intercalate)
import Data.Char (isPunctuation)

removeQuotes :: String -> String
removeQuotes = filter (\c -> c /= '"' && c /= '\'')

main :: IO ()
main = do
    let stringWithQuotes = "Haskell sa, \"La oss lære noen funksjoner!\""
    putStrLn $ removeQuotes stringWithQuotes

Eksempel på utdata:

Haskell sa, La oss lære noen funksjoner!

Dypdykk

Det var en gang, før strenger i programmering var like vanlig som kattevideoer på internett, var tekstbehandling en finurlig virksomhet. Men ettersom programmeringsspråk utviklet seg, ble strenger en avgjørende del av kodingen. Likevel forble anførselstegn et tveegget sverd—essensielt for å definere strenger, men et bryderi når de ble inkludert som faktiske data.

Alternativer? I stedet for å swatte vekk alle anførselstegn som fluer, kan du være selektiv. Du vil kanskje bare fjerne de ytterste anførselstegnene (en klassisk trim) eller håndtere escapede anførselstegn inni en streng.

Når det gjelder implementasjon, bruker removeQuotes-funksjonen over et lambda til å kontrollere hver karakter (c) for å se om det er et plagsomt anførselstegn og filtrerer dem ut deretter. Dette er en grei tilnærming, men for større tekster eller mer komplekse regler, kan du ønske å se på parserbiblioteker som Parsec som kan gi deg mer finesse og kraft i tekstbehandlingen.

Se også: