Viết hoa một chuỗi

Haskell:
Viết hoa một chuỗi

Làm thế nào:

Để viết hoa các chuỗi trong Haskell, ngôn ngữ này không có hàm capitalize được xây dựng sẵn. Vì vậy, chúng ta sẽ tự tạo một hàm sử dụng các hàm toUppertoLower từ mô-đun Data.Char.

import Data.Char (toUpper, toLower)

-- Viết hoa kí tự đầu tiên của chuỗi và chuyển phần còn lại thành chữ thường
capitalize :: String -> String
capitalize ""     = ""
capitalize (x:xs) = toUpper x : map toLower xs

main = do
  print $ capitalize "haskell"       -- Đầu ra "Haskell"
  print $ capitalize "hASKELL"       -- Đầu ra "Haskell"
  print $ capitalize ""              -- Đầu ra ""
  print $ capitalize "hello world!"  -- Đầu ra "Hello world!"

Tìm hiểu sâu

Haskell, một ngôn ngữ lập trình hàm, không bao gồm chức năng viết hoa chuỗi đơn giản trong thư viện tiêu chuẩn của mình, có thể là vì việc thực hiện nó quá đơn giản và không phải là một nhu cầu thường xuyên trong loại lập trình mà nó được thiết kế.

Các phương án thay thế cho hàm capitalize có thể sử dụng Data.Text có thể mang lại lợi ích về hiệu suất cho các văn bản lớn do cách biểu diễn nội bộ hiệu quả hơn. Hoặc tìm hiểu các thư viện như text-icu cho việc viết hoa nhạy cảm với ngữ cảnh địa phương một cách mạnh mẽ.

Về mặt thực hiện, đáng lưu ý là hàm capitalize của chúng ta không xử lý các kí tự không phải ASCII. Nếu bạn cần hỗ trợ Unicode đầy đủ, bạn sẽ phải tìm giải pháp thư viện hoặc xử lý các trường hợp phức tạp của việc viết hoa Unicode nơi mà việc chuyển đổi từng kí tự đơn giản không đáp ứng được.

Xem thêm