Cara mengonversi string menjadi huruf besar atau kecil di Ruby

1110

Bagaimana cara mengambil string dan mengubahnya menjadi huruf besar atau kecil di Ruby?

Pelit Panas
sumber

Jawaban:

1590

Ruby memiliki beberapa metode untuk mengubah kasus string. Untuk mengonversi menjadi huruf kecil, gunakan downcase:

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

Demikian pula, upcasekapitalisasi setiap huruf dan capitalizekapitalisasi huruf pertama dari string tetapi turunkan sisanya:

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

Jika Anda ingin memodifikasi string di tempat, Anda dapat menambahkan tanda seru ke salah satu metode tersebut:

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

Lihat dokumentasi untuk String untuk informasi lebih lanjut.

Sophie Alpert
sumber
2
Saya hanya memikirkannya setelah saya menjawabnya, tetapi saya akan memberi Anda kredit karena telah meluangkan waktu untuk menjawabnya. Terima kasih!
Heat Miser
3
Awas! Sepertinya saya suka menggunakan bang "!" akan mengembalikan nihil jika tidak ada huruf kapital. jadi str = "this" .downcase! mengembalikan str = nil
Phil_Ken_Sebben
12
Seringkali, "metode ledakan" kembali nil; Anda harus menggunakannya jika Anda ingin mengubah objek di tempat, bukan jika Anda ingin menyimpan nilai dalam variabel lain.
Sophie Alpert
6
.titleizeberasal dari Rails. Tidak dapat menemukannya di Stringdokumentasi ruby
ronald8192
3
titleizeperlu dihapus dari jawaban ini atau setidaknya menyatakan itu adalah metode Rails.
Sagar Pandya
122

Anda dapat mengetahui semua metode yang tersedia pada sebuah String dengan membuka irb dan menjalankan:

"MyString".methods.sort

Dan untuk daftar metode yang tersedia untuk string khususnya:

"MyString".own_methods.sort

Saya menggunakan ini untuk mencari tahu hal-hal baru dan menarik tentang objek yang mungkin tidak saya ketahui ada.

mlambie
sumber
12
Satu-satunya masalah dengan jawaban ini adalah #own_methods tampaknya tidak ada. Apakah itu dari ekstensi Irb?
Mark Wilden
12
Hai - Saya pikir saya sedang mempelajari sesuatu yang baru dengan #own_methods saat itu, tetapi itu juga tidak ada untuk saya. Namun, saya biasanya pergi: ("MyString" .methods - Object.merhods) .sort
ahli kelautan
2
Sangat mirip dengan patch @fakeleft direferensikan, dan saya memilikinya di file .irbrc saya. Saya monyet menambal Obyek dan membuat #own_methds dengan ini: (obj.methods - obj.class.superclass.instance_methods) .sort
mlambie
1
@ Laser Metode untuk String khususnya adalah yang didefinisikan dalam kelas String itu sendiri. Metode yang tersedia pada String termasuk yang didefinisikan dalam superclass (es).
Dana Gugatan Monica
1
Gunakan String.public_instance_methods(false)untuk menemukan semua metode instance publik yang ditentukan secara khusus oleh String.
3limin4t0r
39

Seperti @endeR disebutkan, jika internasionalisasi menjadi perhatian, permata unicode_utils lebih dari cukup.

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

Manipulasi string di Ruby 2.4 sekarang unicode-sensitive.

nurettin
sumber
12

... dan huruf besar adalah:

"Awesome String".upcase
=> "AWESOME STRING"
mlambie
sumber
12

Rel Active Support permata menyediakan upcase, downcase, swapcase, capitalize, dll metode dengan dukungan internasionalisasi:

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

Anda dapat menemukan metode string seperti "strings".methods Anda dapat menentukan string sebagai upcase, downcase, titleize. Sebagai contoh,

"hii".downcase
"hii".titleize
"hii".upcase
Foram Thakral
sumber
1

The .swapcase metode transformasi latters huruf besar dalam sebuah string ke huruf kecil dan huruf kecil ke huruf besar.

'TESTING'.swapcase #=> testing
'testing'.swapcase #=> TESTING
Rajkumar Ulaganadhan
sumber
1
Terima kasih! Inilah yang saya cari. String case campuran mungkin membuatnya lebih jelas apa yang dilakukan metode ini ...'Testing'.swapcase #=> tESTING
Matius
0

Tidak akan berhasil untuk setiap orang, tetapi ini hanya menghemat banyak waktu. Saya baru saja mengalami masalah dengan CSV yang mengembalikan "TRUE atau" FALSE "jadi saya hanya menambahkan VALUE.to_s.downcase ==" true "yang akan mengembalikan boolean true jika nilainya" TRUE "dan false jika nilainya" FALSE " ", tetapi masih akan bekerja untuk boolean benar dan salah.

Mason SB
sumber