Ta bort tecken som matchar ett mönster

Haskell:
Ta bort tecken som matchar ett mönster

How to:

import Data.List (delete)

-- Ta bort alla förekomster av ett specifikt tecken
removeChar :: Char -> String -> String
removeChar char = filter (/= char)

-- Använd removeChar
main :: IO ()
main = do
    let original = "Haskell är läckert!"
    let result = removeChar 'ä' original
    putStrLn result

Output:

Haskell är läckert!  -- Originalsträngen
Haskell r läckert!   -- Efter borttagning av 'ä'

För mer komplexa mönster, använd reguljära uttryck med regex-paketet:

import Text.Regex.TDFA ((=~))

-- Ta bort alla vokaler
removeVowels :: String -> String
removeVowels str = str =~ "[^aeiouyAEIOUY]"

-- Använd removeVowels
main :: IO ()
main = do
    let text = "Haskell är mäktigt!"
    let noVowels = removeVowels text
    putStrLn noVowels

Output:

Hskll r mkttg!

Deep Dive

Historiskt sätt har textmanipulering varit en del av programmering sedan början. Haskell ger oss funktioner som filter ur standardbiblioteket för enkla uppgifter. Reguljära uttryck från paket som regex ger kraftfullare möjligheter. Haskell hanterar det funktionellt, vilket skiljer sig från imperativa språk. Ett funktionellt tillvägagångssätt fokuserar på att applikationen av funktioner och sammansättning ger läsbar och säker kod.

Alternativ till att ta bort tecken kan inkludera att använda parser-bibliotek som parsec eller megaparsec för mer avancerade textbearbetningsbehov.

See Also