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


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 .


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.


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.


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



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"

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

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

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

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.