Tekstin etsiminen ja korvaaminen

Haskell:
Tekstin etsiminen ja korvaaminen

How to:

import Data.List (isInfixOf)

-- Etsi tekstiä listasta ja korvaa uudella tekstillä
replaceText :: String -> String -> String -> String
replaceText old new = unwords . map (replaceWord old new) . words
  where
    replaceWord o n word = if o `isInfixOf` word then n else word

main :: IO ()
main = do
    let originalText = "Tervetuloa Haskellin ihmeelliseen maailmaan!"
    let newText = replaceText "ihmeelliseen" "hauskaan" originalText
    putStrLn newText

Esimerkkitulostus:

Tervetuloa Haskellin hauskaan maailmaan!

Deep Dive

Haskellissa tekstinkäsittely on funktionaalista. Se tarkoittaa, että tekstin etsiminen ja korvaaminen tapahtuu ilman muuttuvia tiloja. Historiallisesti tämä lähestymistapa juontaa juurensa alkujaan LISP-kielestä, joka vaikutti funktionaalisen ohjelmoinnin kehitykseen.

Vaihtoehtoisesti voit käyttää regex-kirjastoa monimutkaisempiin hakuihin ja korvauksiin (esim. Text.Regex.TDFA). Tämän kirjaston avulla voit käyttää säännöllisiä lausekkeita tehokkaampaan tekstinkäsittelyyn.

Haskell toteuttaa tekstinkorvauksen immutaabelilla tavalla, mikä tarkoittaa, että alkuperäinen teksti pysyy muuttumattomana. Tämä on yksi monista Haskellin ominaisuuksista, joka auttaa välttämään sivuvaikutuksia ja tekee koodista turvallisempaa.

See Also