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, надаючи більш розширений синтаксис та контроль.