So konvertieren Sie eine Zeichenfolge in Ruby in Klein- oder Großbuchstaben

1110

Wie nehme ich eine Zeichenfolge und konvertiere sie in Ruby in Klein- oder Großbuchstaben?

Heat Miser
quelle

Antworten:

1590

Ruby hat einige Methoden, um den Fall von Strings zu ändern. Verwenden Sie zum Konvertieren in Kleinbuchstaben downcase:

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

In ähnlicher Weise wird upcasejeder Buchstabe groß geschrieben und capitalizeder erste Buchstabe der Zeichenfolge großgeschrieben, der Rest wird jedoch in Kleinbuchstaben geschrieben:

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

Wenn Sie eine Zeichenfolge an Ort und Stelle ändern möchten, können Sie jeder dieser Methoden ein Ausrufezeichen hinzufügen:

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

Weitere Informationen finden Sie in der Dokumentation zu String .

Sophie Alpert
quelle
2
Ich habe erst darüber nachgedacht, nachdem ich es beantwortet hatte, aber ich gebe Ihnen die Ehre, sich die Zeit genommen zu haben, es trotzdem zu beantworten. Vielen Dank!
Heat Miser
3
Achtung! sieht für mich aus wie mit dem Knall "!" wird null zurückgeben, wenn es keinen Großbuchstaben gibt. also str = "this" .downcase! gibt str = nil zurück
Phil_Ken_Sebben
12
Oft kehren "Knallmethoden" zurück nil; Sie sollten sie verwenden, wenn Sie ein Objekt an Ort und Stelle ändern möchten, nicht, wenn Sie den Wert in einer anderen Variablen speichern möchten.
Sophie Alpert
6
.titleizeist von Rails. Kann es nicht in der Ruby- StringDokumentation finden
ronald8192
3
titleizemuss aus dieser Antwort entfernt werden oder zumindest angeben, dass es sich um eine Rails-Methode handelt.
Sagar Pandya
122

Sie können alle für einen String verfügbaren Methoden herausfinden, indem Sie irb öffnen und ausführen:

"MyString".methods.sort

Und für eine Liste der Methoden, die insbesondere für Zeichenfolgen verfügbar sind:

"MyString".own_methods.sort

Ich benutze dies, um neue und interessante Dinge über Objekte herauszufinden, von denen ich sonst vielleicht nicht gewusst hätte, dass sie existieren.

mlambie
quelle
12
Das einzige Problem mit dieser Antwort ist, dass #own_methods nicht zu existieren scheint. Ist es von einer Irb-Erweiterung?
Mark Wilden
12
Hallo - Ich dachte, ich würde damals mit den #own_methods etwas Neues lernen, aber es existiert auch nicht für mich. Ich in der Regel jedoch gehen: ( "MyString" .methods - Object.merhods) .Sort
oceanician
2
Sehr ähnlich dem Patch, auf den @fakeleft verwiesen wird, und ich habe ihn in meiner .irbrc-Datei. Ich Affen-Patch-Objekt und erstelle #own_methds mit diesem: (obj.methods - obj.class.superclass.instance_methods) .sort
mlambie
1
@Laser Insbesondere die Methoden für String sind diejenigen, die in der String-Klasse selbst definiert sind. Die für einen String verfügbaren Methoden umfassen diejenigen, die in seinen Oberklassen definiert sind.
Fund Monica Klage
1
Verwenden Sie String.public_instance_methods(false)diese Option , um alle Methoden für öffentliche Instanzen zu finden, die speziell von definiert sind String.
3limin4t0r
39

Wie bereits bei @endeR erwähnt, ist das Juwel unicode_utils mehr als ausreichend, wenn es um Internationalisierung geht.

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

String-Manipulationen in Ruby 2.4 sind jetzt unicodeempfindlich.

nurettin
quelle
18

Die Ruby- downcaseMethode gibt eine Zeichenfolge zurück, deren Großbuchstaben durch Kleinbuchstaben ersetzt werden.

"string".downcase

https://ruby-doc.org/core-2.1.0/String.html#method-i-downcase

Heat Miser
quelle
Ruby-Conversions hier: techotopia.com/index.php/Ruby_String_Conversions
TStamper
2
Technisch gesehen hilft dies zwar bei der Beantwortung der Frage, sollte aber wirklich aufschlussreicher sein. Zeigen Sie das Ergebnis vielleicht? Vielleicht ein Link zur Dokumentation?
der Blechmann
12

... und der Großbuchstabe lautet:

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

Die Rails Aktive Unterstützung Juwel bietet upcase, downcase, swapcase, capitalizeetc. Methoden mit Unterstützung der Internationalisierung:

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
quelle
1

Sie können Strings Methode finden , wie "strings".methods Sie Zeichenfolge wie definieren können upcase, downcase, titleize. Zum Beispiel,

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

Die .swapcase- Methode wandelt die Großbuchstaben in einer Zeichenfolge in Kleinbuchstaben und die Kleinbuchstaben in Großbuchstaben um.

'TESTING'.swapcase #=> testing
'testing'.swapcase #=> TESTING
Rajkumar Ulaganadhan
quelle
1
Vielen Dank! Genau das habe ich gesucht. Eine Zeichenfolge mit gemischten Groß- und Kleinschreibung könnte deutlicher machen, was genau diese Methode bewirkt ...'Testing'.swapcase #=> tESTING
Matthew
0

Funktioniert nicht für alle, aber das hat mir viel Zeit gespart. Ich hatte gerade das Problem mit einer CSV, die "TRUE" oder "FALSE" zurückgibt, also habe ich gerade VALUE.to_s.downcase == "true" hinzugefügt, wodurch der boolesche Wert true zurückgegeben wird, wenn der Wert "TRUE" ist, und false, wenn der Wert "FALSE" ist ", funktioniert aber trotzdem für den Booleschen Wert wahr und falsch.

Mason SB
quelle