Jak wziąć ciąg i przekonwertować go na małe lub duże litery w Ruby?
Jak wziąć ciąg i przekonwertować go na małe lub duże litery w Ruby?
Odpowiedzi:
Ruby ma kilka metod zmiany wielkości liter. Aby przekonwertować na małe litery, użyj downcase
:
"hello James!".downcase #=> "hello james!"
Podobnie, upcase
każda litera jest pisana wielką literą, a capitalize
pierwsza litera ciągu jest wielka, ale reszta ma małe litery:
"hello James!".upcase #=> "HELLO JAMES!"
"hello James!".capitalize #=> "Hello james!"
"hello James!".titleize #=> "Hello James!"
Jeśli chcesz zmodyfikować ciąg w miejscu, możesz dodać wykrzyknik do dowolnej z tych metod:
string = "hello James!"
string.downcase!
string #=> "hello james!"
Aby uzyskać więcej informacji, zapoznaj się z dokumentacją String .
nil
; powinieneś ich użyć, jeśli chcesz zmienić obiekt na miejscu, a nie jeśli chcesz zapisać wartość w innej zmiennej.
.titleize
jest z Railsów. Nie można go znaleźć w String
dokumentacji ruby
titleize
należy usunąć z tej odpowiedzi lub przynajmniej stwierdzić, że jest to metoda Railsowa.
Możesz dowiedzieć się o wszystkich metodach dostępnych na Ciągu, otwierając irb i uruchamiając:
"MyString".methods.sort
Aby uzyskać listę metod dostępnych w szczególności dla ciągów:
"MyString".own_methods.sort
Używam tego, aby odkryć nowe i interesujące rzeczy na temat przedmiotów, które w innym przypadku nie istniałyby.
String.public_instance_methods(false)
aby znaleźć wszystkie metody wystąpienia publicznego zdefiniowane przez String
.
Jak wspomniano @endeR, jeśli internacjonalizacja stanowi problem, klejnot unicode_utils jest więcej niż wystarczający.
$ gem install unicode_utils
$ irb
> require 'unicode_utils'
=> true
> UnicodeUtils.downcase("FEN BİLİMLERİ", :tr)
=> "fen bilimleri"
Manipulacje ciągami w Ruby 2.4 są teraz wrażliwe na Unicode.
Metoda ruby downcase
zwraca ciąg znaków z dużymi literami zastąpionymi małymi literami.
"string".downcase
https://ruby-doc.org/core-2.1.0/String.html#method-i-downcase
Szyny Active Support gem zapewnia upcase
, downcase
, swapcase
, capitalize
, itd. Metody z obsługą internacjonalizacji:
gem install activesupport
irb -ractive_support/core_ext/string
"STRING ÁÂÃÀÇÉÊÍÓÔÕÚ".mb_chars.downcase.to_s
=> "string áâãàçéêíóôõú"
"string áâãàçéêíóôõú".mb_chars.upcase.to_s
=> "STRING ÁÂÃÀÇÉÊÍÓÔÕÚ"
Można znaleźć łańcuchy sposób jak "strings".methods
można zdefiniować jako ciąg upcase
, downcase
, titleize
. Na przykład,
"hii".downcase
"hii".titleize
"hii".upcase
Metoda .swapcase przekształca wielkie litery w ciąg znaków na małe i małe litery na wielkie.
'TESTING'.swapcase #=> testing
'testing'.swapcase #=> TESTING
'Testing'.swapcase #=> tESTING
Od Ruby 2.4 jest wbudowane pełne mapowanie wielkości liter w Unicode . Źródło: https://stackoverflow.com/a/38016153/888294 . Zobacz szczegóły w dokumentacji Ruby 2.4.0: https://ruby-doc.org/core-2.4.0/String.html#method-i-downcase
Nie zadziała dla każdego, ale zaoszczędziło mi to sporo czasu. Właśnie miałem problem z CSV zwracającym „PRAWDA” lub „FAŁSZ”, więc właśnie dodałem WARTOŚĆ. To_s.downcase == „prawda”, która zwróci wartość logiczną „prawda”, jeśli wartość „PRAWDA”, a fałsz, jeśli wartość „FAŁSZ” ”, ale nadal będzie działać na wartość logiczną prawda i fałsz.