Haskell:
Substrings extraheren

Hoe te:

In Haskell kun je strings in stukjes snijden met ingebouwde functies zoals take, drop en substring (van Data.Text).

import Data.Text (Text, pack, unpack, take, drop)

-- Onze voorbeeldstring
let exampleStr = "Haskell makes sense!"

-- De eerste 7 karakters nemen
print $ unpack (take 7 (pack exampleStr)) -- "Haskell"

-- De eerste 8 karakters weggooien
print $ unpack (drop 8 (pack exampleStr)) -- "makes sense!"

-- Aangepaste functie om een substring te extraheren op positie en lengte
substring :: Int -> Int -> Text -> Text
substring start length = take length . drop start

-- "makes" extraheren (startend van positie 8, lengte 5)
print $ unpack (substring 8 5 (pack exampleStr)) -- "makes"

Voorbeelduitvoer:

"Haskell"
"makes sense!"
"makes"

Diepgaand

Het extraheren van substringen is al lang onderdeel van Haskell. Aanvankelijk vertrouwde het op lijsten, aangezien strings lijsten van karakters zijn. De prestaties waren niet geweldig. Voer Data.Text in, met efficiënte stringbewerkingen.

Alternatieven omvatten lijstbewerkingen, regex en parsingbibliotheken. Lijstbewerkingen zijn eenvoudiger maar trager voor grote strings. Regex is krachtig maar overkill voor eenvoudige taken. Parsingbibliotheken zijn bedoeld voor complexe parsing maar kunnen ook substrings aan.

Het implementeren van een aangepaste substring functie in Haskell gaat eenvoudig met take en drop van Data.Text, wat snellere stringverwerking biedt dan op lijsten gebaseerde bewerkingen.

Zie Ook