Haskell:
Преобразование строки в верхний регистр
Как это сделать:
Чтобы преобразовать строки в заглавные буквы на Haskell, сам язык не имеет встроенной функции capitalize
. Поэтому мы создадим свою с использованием функций toUpper
и toLower
из модуля Data.Char
.
import Data.Char (toUpper, toLower)
-- Делает первую букву строки заглавной, а остальные - строчными
capitalize :: String -> String
capitalize "" = ""
capitalize (x:xs) = toUpper x : map toLower xs
main = do
print $ capitalize "haskell" -- Выводит "Haskell"
print $ capitalize "hASKELL" -- Выводит "Haskell"
print $ capitalize "" -- Выводит ""
print $ capitalize "hello world!" -- Выводит "Hello world!"
Подробнее
Haskell, функциональный язык программирования, не включает в свою стандартную библиотеку простой функции преобразования строк в заглавные буквы, возможно, потому что это тривиально для реализации и не является общей необходимостью в типе программирования, для которого он предназначен.
Альтернативы функции capitalize
могут использовать Data.Text
, который может предложить преимущества производительности для больших текстов благодаря более эффективному внутреннему представлению. Или изучите библиотеки типа text-icu
для надёжного учёта локализации при преобразовании.
Что касается реализации, стоит отметить, что наша функция capitalize
не работает с не-ASCII символами. Если вам нужна полная поддержка Unicode, вам придется искать решение на основе библиотеки или обрабатывать сложные случаи преобразования Unicode, где простые преобразования посимвольно не подходят.
Смотрите также
- Модуль
Data.Char
Haskell: http://hackage.haskell.org/package/base-4.16.0.0/docs/Data-Char.html Data.Text
для эффективной манипуляции текстом: http://hackage.haskell.org/package/text- Введение в обработку текстов на Haskell: https://wiki.haskell.org/Text_Processing
- Учёт Unicode в Haskell: https://wiki.haskell.org/Unicode_input_and_output