Làm cách nào để lấy một chuỗi và chuyển đổi nó thành chữ thường hoặc chữ hoa trong Ruby?
Làm cách nào để lấy một chuỗi và chuyển đổi nó thành chữ thường hoặc chữ hoa trong Ruby?
Câu trả lời:
Ruby có một vài phương thức để thay đổi trường hợp chuỗi. Để chuyển đổi thành chữ thường, sử dụng downcase
:
"hello James!".downcase #=> "hello james!"
Tương tự, upcase
viết hoa mỗi chữ cái và capitalize
viết hoa chữ cái đầu tiên của chuỗi nhưng viết thường phần còn lại:
"hello James!".upcase #=> "HELLO JAMES!"
"hello James!".capitalize #=> "Hello james!"
"hello James!".titleize #=> "Hello James!"
Nếu bạn muốn sửa đổi một chuỗi tại chỗ, bạn có thể thêm một dấu chấm than cho bất kỳ phương thức nào sau đây:
string = "hello James!"
string.downcase!
string #=> "hello james!"
Tham khảo tài liệu về String để biết thêm thông tin.
nil
; bạn nên sử dụng chúng nếu bạn muốn thay đổi một đối tượng tại chỗ, chứ không phải nếu bạn muốn lưu trữ giá trị trong một biến khác.
.titleize
là từ Rails. Không thể tìm thấy nó trong String
tài liệu ruby
titleize
cần phải được loại bỏ khỏi câu trả lời này hoặc ít nhất nói rằng đó là một phương pháp Rails.
Bạn có thể tìm hiểu tất cả các phương thức có sẵn trên Chuỗi bằng cách mở irb và chạy:
"MyString".methods.sort
Và để biết danh sách các phương thức có sẵn cho các chuỗi nói riêng:
"MyString".own_methods.sort
Tôi sử dụng điều này để tìm hiểu những điều mới và thú vị về các đối tượng mà tôi có thể không biết có tồn tại.
String.public_instance_methods(false)
để tìm tất cả các phương thức công khai được xác định cụ thể bởi String
.
Giống như @endeR đã đề cập, nếu quốc tế hóa là một mối quan tâm, đá quý unicode_utils là quá đủ.
$ gem install unicode_utils
$ irb
> require 'unicode_utils'
=> true
> UnicodeUtils.downcase("FEN BİLİMLERİ", :tr)
=> "fen bilimleri"
Các thao tác chuỗi trong Ruby 2.4 hiện nhạy cảm với unicode.
downcase
Phương thức ruby trả về một chuỗi với các chữ cái viết hoa được thay thế bằng các chữ cái viết thường.
"string".downcase
https://ruby-doc.org/core-2.1.0/String.html#method-i-downcase
Các Rails tích cực hỗ trợ đá quý cung cấp upcase
, downcase
, swapcase
, capitalize
, vv phương pháp với sự hỗ trợ quốc tế:
gem install activesupport
irb -ractive_support/core_ext/string
"STRING ÁÂÃÀÇÉÊÍÓÔÕÚ".mb_chars.downcase.to_s
=> "string áâãàçéêíóôõú"
"string áâãàçéêíóôõú".mb_chars.upcase.to_s
=> "STRING ÁÂÃÀÇÉÊÍÓÔÕÚ"
Bạn có thể tìm phương pháp chuỗi như "strings".methods
bạn có thể xác định chuỗi như upcase
, downcase
, titleize
. Ví dụ,
"hii".downcase
"hii".titleize
"hii".upcase
Các .swapcase biến đổi phương pháp latters hoa trong một chuỗi thành chữ thường và chữ thường sang chữ hoa.
'TESTING'.swapcase #=> testing
'testing'.swapcase #=> TESTING
'Testing'.swapcase #=> tESTING
Vì Ruby 2.4 có một ánh xạ trường hợp Unicode đầy đủ . Nguồn: https://stackoverflow.com/a/38016153/888294 . Xem tài liệu Ruby 2.4.0 để biết chi tiết: https://ruby-doc.org/core-2.4.0/String.html#method-i-downcase
Sẽ không làm việc cho mọi người, nhưng điều này chỉ giúp tôi tiết kiệm rất nhiều thời gian. Tôi vừa gặp sự cố với CSV trả về "TRUE hoặc" FALSE "vì vậy tôi vừa thêm VALUE.to_s.downcase ==" true "sẽ trả về giá trị boolean đúng nếu giá trị là" TRUE "và sai nếu giá trị là" FALSE ", Nhưng vẫn sẽ hoạt động cho boolean đúng và sai.