Преобразование строки в верхний регистр

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, где простые преобразования посимвольно не подходят.

Смотрите также