Jak przekonwertować ciąg na małe lub wielkie litery w Ruby


Odpowiedzi:


1589

Ruby ma kilka metod zmiany wielkości liter. Aby przekonwertować na małe litery, użyj downcase:

"hello James!".downcase    #=> "hello james!"

Podobnie, upcasekażda litera jest pisana wielką literą, a capitalizepierwsza 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 .


2
Myślałem o tym dopiero po tym, jak odpowiedziałem, ale dam ci pewność, że i tak poświęcisz czas na odpowiedź. Dzięki!
Heat Miser

3
Uważaj! wygląda mi na użycie huku „!” zwróci zero, jeśli nie ma dużej litery. więc str = "this" .downcase! zwraca str = zero
Phil_Ken_Sebben

12
Często powracają „metody huku” nil; powinieneś ich użyć, jeśli chcesz zmienić obiekt na miejscu, a nie jeśli chcesz zapisać wartość w innej zmiennej.
Sophie Alpert,

6
.titleizejest z Railsów. Nie można go znaleźć w Stringdokumentacji ruby
ronald8192

3
titleizenależy usunąć z tej odpowiedzi lub przynajmniej stwierdzić, że jest to metoda Railsowa.
Sagar Pandya

122

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.


12
Jedynym problemem związanym z tą odpowiedzią jest to, że #own_methods nie istnieje. Czy to z rozszerzenia Irb?
Mark Wilden

12
Cześć - Myślałem wtedy, że uczę się czegoś nowego z #own_methods, ale dla mnie też to nie istnieje. Jednak zwykle wybieram: („MyString” .methods - Object.merhods) .sort
oceanicjan

2
Bardzo podobny do łatki @fakeleft, do której się odwołuje, i mam go w moim pliku .irbrc. Małpuję łatę Object i tworzę #own_methds za pomocą tego: (obj.methods - obj.class.superclass.instance_methods) .sort
mlambie

1
@Laser W szczególności metody dla String są tymi zdefiniowanymi w samej klasie String. Metody dostępne w ciągu obejmują metody zdefiniowane w jego nadklasie (klasach).
Pozew funduszu Moniki w

1
Użyj, String.public_instance_methods(false)aby znaleźć wszystkie metody wystąpienia publicznego zdefiniowane przez String.
Elimin4t0r

39

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.



12

... a wielkie litery to:

"Awesome String".upcase
=> "AWESOME STRING"

12

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  ÁÂÃÀÇÉÊÍÓÔÕÚ"

1

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

1

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

1
Dzięki! Właśnie tego szukałem. Mieszany ciąg znaków może sprawić, że bardziej oczywiste będzie dokładnie to, co robi ta metoda ...'Testing'.swapcase #=> tESTING
Matthew


0

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.