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

1109

Jak wziąć ciąg i przekonwertować go na małe lub duże litery w Ruby?

Nędzarz ciepła
źródło

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 .

Sophie Alpert
źródło
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.

mlambie
źródło
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.

nurettin
źródło
18

Metoda ruby downcasezwraca 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

Nędzarz ciepła
źródło
konwersje ruby ​​tutaj: techotopia.com/index.php/Ruby_String_Conversions
TStamper
2
Technicznie pomaga to odpowiedzieć na pytanie, ale naprawdę powinno być bardziej pouczające. Być może pokazać wynik? Może link do dokumentacji?
Tin Man
12

... a wielkie litery to:

"Awesome String".upcase
=> "AWESOME STRING"
mlambie
źródło
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  ÁÂÃÀÇÉÊÍÓÔÕÚ"
holder.vasc
źródło
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
Foram Thakral
źródło
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
Rajkumar Ulaganadhan
źródło
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.

Mason SB
źródło