Haskell:
Extraindo substrings

Como Fazer:

import Data.List (isPrefixOf)

-- Exemplo 1: Usar a função 'take'
substringInicio :: String -> Int -> String
substringInicio s n = take n s

-- Exemplo 2: Usar a função 'drop'
substringFinal :: String -> Int -> String
substringFinal s n = drop n s

-- Exemplo 3: Usando 'take' e 'drop' juntas para pegar uma substring no meio
substringMeio :: String -> Int -> Int -> String
substringMeio s inicio tamanho = take tamanho . drop inicio $ s 

-- Resultados
main :: IO ()
main = do
    putStrLn $ substringInicio "Olá mundo!" 4 -- "Olá "
    putStrLn $ substringFinal "Haskell" 3     -- "ell"
    putStrLn $ substringMeio "Fatiar strings" 7 6 -- "string"

Mergulho Profundo

Extrair substrings é uma operação básica, mas fundamental, das linguagens de programação desde o início, porque processar texto é incrivelmente comum. Em Haskell, a abordagem puramente funcional tem algumas implicações na forma como lidamos com strings. Em vez de métodos internos que alteram a string original (como algumas outras linguagens fazem), Haskell favorece o uso de funções que retornam novas strings.

Alternativas para extrair substrings podem incluir expressões regulares (com o pacote regex), que são mais flexíveis mas também mais complexas. Uma outra característica a se considerar é quando trabalhamos com textos grandes. O tipo String em Haskell é representado como uma lista de caracteres, o que pode ser ineficiente para strings grandes. Nesses casos, pode ser melhor usar a biblioteca Text que é otimizada para lidar com texto de forma mais performática.

Veja Também