Come convertire una stringa in minuscolo o maiuscolo in Ruby


Risposte:


1590

Ruby ha alcuni metodi per cambiare il caso delle stringhe. Per convertire in minuscolo, utilizzare downcase:

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

Allo stesso modo, upcasecapitalizza ogni lettera e capitalizemaiuscola 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 .


2
Ci ho pensato solo dopo aver risposto, ma ti darò il merito di aver avuto il tempo di rispondere comunque. Grazie!
Heat Miser,

3
Attento! mi sembra di usare il botto "!" restituirà zero se non c'è maiuscola. so str = "this" .downcase! restituisce str = zero
Phil_Ken_Sebben il

12
Spesso ritornano i "metodi bang" nil; dovresti usarli se vuoi cambiare un oggetto sul posto, non se vuoi salvare il valore in un'altra variabile.
Sophie Alpert,

6
.titleizeviene da Rails. Impossibile trovarlo nella Stringdocumentazione di Ruby
ronald8192,

3
titleizedeve essere rimosso da questa risposta o almeno dichiarare che si tratta di un metodo Rails.
Sagar Pandya,

122

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.


12
L'unico problema con questa risposta è che #own_methods non sembra esistere. Viene da un'estensione Irb?
Mark Wilden,

12
Ciao - Pensavo di aver imparato qualcosa di nuovo con i #own_methods allora, ma non esiste neanche per me. Tuttavia, di solito vado: ("MyString" .methods - Object.merhods) .sort
oceanician

2
Molto simile alla patch a cui fa riferimento @fakeleft e ce l'ho nel mio file .irbrc. Scimmia patch Oggetto e creo #own_methds con questo: (obj.methods - obj.class.superclass.instance_methods) .sort
mlambie

1
@Laser I metodi per String in particolare sono quelli definiti nella classe String stessa. I metodi disponibili su una stringa includono quelli definiti nelle sue superclassi.
Finanzia la causa di Monica

1
Utilizzare String.public_instance_methods(false)per trovare tutti i metodi di istanza pubblica specificatamente definiti da String.
3limin4t0r

39

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.



12

... e la maiuscola è:

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

12

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

1

È possibile trovare il metodo stringhe come "strings".methods è possibile definire stringa come upcase, downcase, titleize. Per esempio,

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

1

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

1
Grazie! Questo e 'esattamente quello che stavo cercando. Una stringa di maiuscole e minuscole potrebbe rendere più ovvio esattamente cosa fa questo metodo ...'Testing'.swapcase #=> tESTING
Matteo,


0

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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.