Come posso prendere una stringa e convertirla in maiuscolo o minuscolo in Ruby?
Come posso prendere una stringa e convertirla in maiuscolo o minuscolo in Ruby?
Risposte:
Ruby ha alcuni metodi per cambiare il caso delle stringhe. Per convertire in minuscolo, utilizzare downcase
:
"hello James!".downcase #=> "hello james!"
Allo stesso modo, upcase
capitalizza ogni lettera e capitalize
maiuscola la prima lettera della stringa ma minuscola il resto:
"hello James!".upcase #=> "HELLO JAMES!"
"hello James!".capitalize #=> "Hello james!"
"hello James!".titleize #=> "Hello James!"
Se si desidera modificare una stringa in atto, è possibile aggiungere un punto esclamativo a uno di questi metodi:
string = "hello James!"
string.downcase!
string #=> "hello james!"
Per ulteriori informazioni, consultare la documentazione di String .
nil
; dovresti usarli se vuoi cambiare un oggetto sul posto, non se vuoi salvare il valore in un'altra variabile.
.titleize
viene da Rails. Impossibile trovarlo nella String
documentazione di Ruby
titleize
deve essere rimosso da questa risposta o almeno dichiarare che si tratta di un metodo Rails.
Puoi scoprire tutti i metodi disponibili su una stringa aprendo irb ed eseguendo:
"MyString".methods.sort
E per un elenco dei metodi disponibili per le stringhe in particolare:
"MyString".own_methods.sort
Lo uso per scoprire cose nuove e interessanti sugli oggetti che altrimenti non avrei saputo esistessero.
String.public_instance_methods(false)
per trovare tutti i metodi di istanza pubblica specificatamente definiti da String
.
Come accennato da @endeR, se l'internazionalizzazione è una preoccupazione, la gemma unicode_utils è più che adeguata.
$ gem install unicode_utils
$ irb
> require 'unicode_utils'
=> true
> UnicodeUtils.downcase("FEN BİLİMLERİ", :tr)
=> "fen bilimleri"
Le manipolazioni delle stringhe in Ruby 2.4 ora sono sensibili all'unicode.
Il downcase
metodo ruby restituisce una stringa con le lettere maiuscole sostituite da lettere minuscole.
"string".downcase
https://ruby-doc.org/core-2.1.0/String.html#method-i-downcase
Il Rails sostegno attivo gemma fornisce upcase
, downcase
, swapcase
, capitalize
, ecc metodi con il supporto all'internazionalizzazione:
gem install activesupport
irb -ractive_support/core_ext/string
"STRING ÁÂÃÀÇÉÊÍÓÔÕÚ".mb_chars.downcase.to_s
=> "string áâãàçéêíóôõú"
"string áâãàçéêíóôõú".mb_chars.upcase.to_s
=> "STRING ÁÂÃÀÇÉÊÍÓÔÕÚ"
È possibile trovare il metodo stringhe come "strings".methods
è possibile definire stringa come upcase
, downcase
, titleize
. Per esempio,
"hii".downcase
"hii".titleize
"hii".upcase
Il metodo .swapcase trasforma le lettere maiuscole in una stringa in lettere minuscole e le lettere minuscole in lettere maiuscole.
'TESTING'.swapcase #=> testing
'testing'.swapcase #=> TESTING
'Testing'.swapcase #=> tESTING
Da Ruby 2.4 esiste una mappatura dei casi Unicode integrata . Fonte: https://stackoverflow.com/a/38016153/888294 . Vedere la documentazione di Ruby 2.4.0 per i dettagli: https://ruby-doc.org/core-2.4.0/String.html#method-i-downcase
Non funzionerà per tutti, ma questo mi ha fatto risparmiare un sacco di tempo. Ho appena avuto il problema con un CSV che restituisce "TRUE o" FALSE ", quindi ho appena aggiunto VALUE.to_s.downcase ==" true "che restituirà il valore booleano true se il valore è" TRUE "e false se il valore è" FALSE ", ma funzionerà comunque per il vero e falso booleano.