Usuwanie cudzysłowów z ciągu znaków

Haskell:
Usuwanie cudzysłowów z ciągu znaków

Jak to zrobić:

W Haskellu możemy stworzyć funkcję, która usunie wszystkie cudzysłowy z danego ciągu znaków. To jakby powiedzieć cudzysłowom, żeby spadły, i upewnić się, że zrozumieli aluzję.

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

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

main :: IO ()
main = do
    let stringWithQuotes = "Haskell powiedział, \"Nauczmy się kilku funkcji!\""
    putStrLn $ removeQuotes stringWithQuotes

Przykładowe wyjście:

Haskell powiedział, Nauczmy się kilku funkcji!

Dogłębniej

Dawno, dawno temu, zanim ciągi znaków w programowaniu stały się równie powszechne jak filmy z kotami w internecie, manipulacja tekstem była karkołomnym zajęciem. Ale wraz z ewolucją języków programowania, ciągi znaków stały się kluczową częścią kodowania. Jednakże, cudzysłowy pozostały mieczem obosiecznym—niezbędne do definiowania ciągów, ale uciążliwe, gdy są zawarte jako rzeczywiste dane.

Alternatywy? Zamiast odpędzać wszystkie cudzysłowy jak muchy, możesz być bardziej selektywny. Możesz chcieć usunąć tylko najbardziej zewnętrzne cudzysłowy (klasyczne przycięcie) lub obsłużyć cudzysłowy uciekające wewnątrz ciągu.

Jeśli chodzi o implementację, funkcja removeQuotes wyżej używa lambdy do sprawdzenia każdego znaku (c), aby zobaczyć, czy jest uciążliwym cudzysłowem i odpowiednio go filtrowania. To prostolinijne podejście, ale dla większych tekstów lub bardziej złożonych zasad, warto rozważyć biblioteki parserów takie jak Parsec, które mogą dać więcej finezji i mocy w przetwarzaniu tekstu.

Zobacz również: