Jak wziąć ciąg i przekonwertować go na małe lub duże litery w Ruby?
1109
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źć wString
dokumentacji rubytitleize
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:
Aby uzyskać listę metod dostępnych w szczególności dla ciągów:
Używam tego, aby odkryć nowe i interesujące rzeczy na temat przedmiotów, które w innym przypadku nie istniałyby.
źródło
String.public_instance_methods(false)
aby znaleźć wszystkie metody wystąpienia publicznego zdefiniowane przezString
.Jak wspomniano @endeR, jeśli internacjonalizacja stanowi problem, klejnot unicode_utils jest więcej niż wystarczający.
Manipulacje ciągami w Ruby 2.4 są teraz wrażliwe na Unicode.
źródło
Metoda ruby
downcase
zwraca ciąg znaków z dużymi literami zastąpionymi małymi literami.https://ruby-doc.org/core-2.1.0/String.html#method-i-downcase
źródło
... a wielkie litery to:
źródło
Szyny Active Support gem zapewnia
upcase
,downcase
,swapcase
,capitalize
, itd. Metody z obsługą internacjonalizacji:źródło
Można znaleźć łańcuchy sposób jak
"strings".methods
można zdefiniować jako ciągupcase
,downcase
,titleize
. Na przykład,źródło
Metoda .swapcase przekształca wielkie litery w ciąg znaków na małe i małe litery na wielkie.
źródło
'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
źródło
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.
źródło