Пошук та заміна тексту

Haskell:
Пошук та заміна тексту

Як це зробити:

import Data.Text as T

-- Пошук та заміна простим текстом
replaceText :: String -> String -> String -> String
replaceText old new = T.unpack . T.replace (T.pack old) (T.pack new) . T.pack

-- Використання функції
main = putStrLn $ replaceText "cat" "dog" "The cat sat on the mat"

-- Результат:
-- "The dog sat on the mat"

Для регулярних виразів використовуємо Text.Regex:

import Text.Regex

-- Пошук та заміна за допомогою регулярних виразів
replaceRegex :: String -> String -> String -> String
replaceRegex regex new input =
  let compiledRegex = mkRegex regex
  in subRegex compiledRegex input new

-- Використання функції
main = putStrLn $ replaceRegex "c.t" "dog" "The cat sat on the mat"

-- Результат:
-- "The dog sat on the mat"

Поглиблений розділ:

Пошук та заміна тексту бере свій початок ще від ранніх редакторів тексту, таких як ed і sed у Unix. Ці інструменти використовувались для роботи з текстовими файлами за допомогою командного рядка. У Haskell ми маємо ряд бібліотек, що надають функціональність для пошуку та заміни, включаючи Data.Text для простого тексту та Text.Regex при роботі з регулярними виразами.

Головна альтернатива — це використання стандартної бібліотеки Prelude з її функціями для роботи з рядками, але Data.Text пропонує покращену продуктивність з великими текстами.

Для регулярних виразів популярною альтернативою є regex-pcre-builtin, що використовує бібліотеку PCRE для мови Haskell, надаючи більш розширений синтаксис та контроль.

Дивись також: