Bir dizeyi Ruby'de küçük veya büyük harfe dönüştürme


Yanıtlar:


1590

Ruby'nin dize durumunu değiştirmek için birkaç yöntemi vardır. Küçük harfe dönüştürmek için şunu kullanın downcase:

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

Benzer şekilde, upcaseher harfi capitalizebüyük ve dizenin ilk harfini büyük yapar, ancak geri kalanını küçültür:

"hello James!".upcase      #=> "HELLO JAMES!"
"hello James!".capitalize  #=> "Hello james!"
"hello James!".titleize    #=> "Hello James!"

Bir dizeyi yerinde değiştirmek istiyorsanız, aşağıdaki yöntemlerden birine ünlem işareti ekleyebilirsiniz:

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

Daha fazla bilgi için Dize belgelerine bakın .


2
Sadece cevapladıktan sonra düşündüm, ama yine de cevaplamak için zaman ayırdığınız için size kredi vereceğim. Teşekkürler!
Heat Miser

3
Dikkat et! bana patlama "gibi görünüyor"! " büyük harf yoksa sıfır döndürür. böylece str = "this". döndürür str = nil
Phil_Ken_Sebben

12
Çoğu zaman, "patlama yöntemleri" geri döner nil; bir nesneyi yerinde değiştirmek istiyorsanız, değeri başka bir değişkende saklamak istemiyorsanız kullanmalısınız.
Sophie Alpert

6
.titleizeRails'ten. Ruby Stringbelgelerinde
bulunamıyor

3
titleizebu yanıttan kaldırılması veya en azından bunun bir Rails yöntemi olduğunu belirtmeniz gerekir.
Sagar Pandya

122

Bir String'de bulunan tüm yöntemleri irb'yi açıp çalıştırarak bulabilirsiniz:

"MyString".methods.sort

Ve özellikle dizeler için mevcut yöntemlerin bir listesi için:

"MyString".own_methods.sort

Bunu, başka türlü varlığını bilmediğim nesneler hakkında yeni ve ilginç şeyler bulmak için kullanıyorum.


12
Bu cevapla ilgili tek sorun #own_methods'ın var olmadığı görünüyor. Irb uzantısından mı geliyor?
Mark Wilden

12
Merhaba - #own_methods ile yeni bir şey öğrendiğimi sanıyordum, ama benim için de mevcut değil. Ancak, genellikle giderim: ("MyString" .methods - Object.merhods) .sort
okyanus uzmanı

2
@Fakeleft yaması çok benzer ve benim .irbrc dosyamda var. Ben maymun yama Nesne bununla #own_methds oluşturup: (obj.methods - obj.class.superclass.instance_methods) .sort
mlambie

1
@Laser Özellikle String için yöntemler String sınıfının kendisinde tanımlanan yöntemlerdir. Bir String üzerinde mevcut olan yöntemler, üst sınıf (lar) ında tanımlanan yöntemleri içerir.
Monica'nın Davası

1
String.public_instance_methods(false)Tarafından özel olarak tanımlanan tüm genel yönetim ortamı yöntemlerini bulmak için kullanın String.
3limin4t0r

39

Bahsedilen @ endeR gibi, eğer uluslararasılaşma bir endişe ise, unicode_utils gem yeterli değildir.

$ gem install unicode_utils
$ irb
> require 'unicode_utils'
=> true
> UnicodeUtils.downcase("FEN BİLİMLERİ", :tr)
=> "fen bilimleri"

Ruby 2.4'teki dize manipülasyonları artık unicode duyarlıdır.



12

... ve büyük harf:

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

12

Raylar Aktif Destek mücevher sağlar upcase, downcase, swapcase, capitalize, vb uluslararası destekli yöntemleri:

gem install activesupport
irb -ractive_support/core_ext/string
"STRING  ÁÂÃÀÇÉÊÍÓÔÕÚ".mb_chars.downcase.to_s
 => "string  áâãàçéêíóôõú"
"string  áâãàçéêíóôõú".mb_chars.upcase.to_s
=> "STRING  ÁÂÃÀÇÉÊÍÓÔÕÚ"

1

"strings".methods Dize upcase, ' downcase, olarak tanımlayabilirsiniz gibi dizeler yöntemini bulabilirsiniz titleize. Örneğin,

"hii".downcase
"hii".titleize
"hii".upcase

1

.Swapcase bir dizede büyük harfli de sonraları küçük harfe yöntem dönüşümleri ve küçük harfler büyük harfe.

'TESTING'.swapcase #=> testing
'testing'.swapcase #=> TESTING

1
Teşekkürler! Tam da aradığım şey buydu. Karışık bir vaka dizesi, bu yöntemin tam olarak ne yaptığını daha açık hale getirebilir ...'Testing'.swapcase #=> tESTING
Matthew


0

Herkes için işe yaramayacak, ama bu bana biraz zaman kazandırdı. Ben sadece "DOĞRU veya" YANLIŞ "dönen bir CSV ile ilgili sorun vardı, bu yüzden değer" DOĞRU ise boolean true ve "YANLIŞ olursa" boolean true döndürecek VALUE.to_s.downcase == "true" ekledi ", ancak yine de doğru ve yanlış boole için çalışır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.