class String

Ein String-Objekt enthält eine beliebige Byte-Sequenz, die typischerweise Text oder Binärdaten darstellt. Ein String-Objekt kann mit String::new oder als Literale erstellt werden.

String-Objekte unterscheiden sich von Symbol-Objekten dadurch, dass Symbol-Objekte als Bezeichner und nicht als Text oder Daten gedacht sind.

Sie können ein String-Objekt explizit erstellen mit

Sie können bestimmte Objekte mit folgenden Mitteln in Strings konvertieren

Einige String-Methoden modifizieren self. Typischerweise modifiziert eine Methode, deren Name mit ! endet, self und gibt self zurück; oft gibt eine gleichnamige Methode (ohne das !) einen neuen String zurück.

Im Allgemeinen, wenn sowohl Bang- als auch Nicht-Bang-Versionen einer Methode existieren, mutiert die Bang-Methode und die Nicht-Bang-Methode tut dies nicht. Eine Methode ohne Bang kann jedoch auch mutieren, wie z.B. String#replace.

Substitutionsmethoden

Diese Methoden führen Substitutionen durch

Jede dieser Methoden nimmt

Die Beispiele in diesem Abschnitt verwenden meist die Methoden String#sub und String#gsub; die hier illustrierten Prinzipien gelten für alle vier Substitutionsmethoden.

Argument pattern

Das Argument pattern ist üblicherweise ein regulärer Ausdruck

s = 'hello'
s.sub(/[aeiou]/, '*') # => "h*llo"
s.gsub(/[aeiou]/, '*') # => "h*ll*"
s.gsub(/[aeiou]/, '')  # => "hll"
s.sub(/ell/, 'al')     # => "halo"
s.gsub(/xyzzy/, '*')   # => "hello"
'THX1138'.gsub(/\d+/, '00') # => "THX00"

Wenn pattern ein String ist, werden alle seine Zeichen als normale Zeichen behandelt (nicht als Regexp-Sonderzeichen)

'THX1138'.gsub('\d+', '00') # => "THX1138"

String replacement

Wenn replacement ein String ist, bestimmt dieser String den ersetzenden String, der für den übereinstimmenden Text substituiert wird.

Jedes der obigen Beispiele verwendet einen einfachen String als ersetzenden String.

String replacement kann Rückverweise auf die Erfassungen des Musters enthalten

Siehe Regexp für Details.

Beachten Sie, dass innerhalb des Strings replacement eine Zeichenkombination wie $& als normaler Text behandelt wird, nicht als spezielle Match-Variable. Sie können jedoch einige spezielle Match-Variablen unter Verwendung dieser Kombinationen referenzieren

Siehe Regexp für Details.

Beachten Sie, dass \\ als Escape interpretiert wird, d.h. ein einzelner Backslash.

Beachten Sie auch, dass ein String-Literal Backslashes verbraucht. Siehe String Literals für Details zu String-Literalen.

Ein Rückverweis wird typischerweise von einem zusätzlichen Backslash eingeleitet. Wenn Sie zum Beispiel einen Rückverweis \& in replacement mit einem doppelt zitierten String-Literal schreiben möchten, müssen Sie "..\\&.." schreiben.

Wenn Sie einen Nicht-Rückverweis-String \& in replacement schreiben möchten, müssen Sie zuerst den Backslash escapen, um zu verhindern, dass diese Methode ihn als Rückverweis interpretiert, und dann müssen Sie die Backslashes erneut escapen, um zu verhindern, dass ein String-Literal sie verbraucht: "..\\\\&..".

Sie möchten vielleicht die Blockform verwenden, um übermäßige Backslashes zu vermeiden.

Hash replacement

Wenn das Argument replacement ein Hash ist und pattern mit einem seiner Schlüssel übereinstimmt, ist der ersetzende String der Wert für diesen Schlüssel

h = {'foo' => 'bar', 'baz' => 'bat'}
'food'.sub('foo', h) # => "bard"

Beachten Sie, dass ein Symbol-Schlüssel nicht übereinstimmt

h = {foo: 'bar', baz: 'bat'}
'food'.sub('foo', h) # => "d"

Block

In der Blockform wird der aktuelle Übereinstimmungsstring an den Block übergeben; der Rückgabewert des Blocks wird zum ersetzenden String

s = '@'
'1234'.gsub(/\d/) { |match| s.succ! } # => "ABCD"

Spezielle Match-Variablen wie $1, $2, $`, $& und $' werden entsprechend gesetzt.

Leerzeichen in Strings

In der Klasse String wird Whitespace als eine zusammenhängende Sequenz von Zeichen definiert, die aus einer beliebigen Mischung der folgenden besteht

Whitespace ist für die folgenden Methoden relevant

Was gibt es hier

Zuerst, was ist anderswo. Klasse String

Hier bietet die Klasse String Methoden, die nützlich sind für

Erstellen eines Strings

Einfrieren/Entfrieren

Abfragen

Zählungen

Teilstrings

Kodierungen

Sonstiges

Vergleichen

Modifizieren

Jede dieser Methoden modifiziert self.

Einfügen

Substitution

Groß-/Kleinschreibung

Encoding

Löschen

Konvertierung zu neuem String

Jede dieser Methoden gibt einen neuen String zurück, der auf self basiert, oft nur eine modifizierte Kopie von self.

Extension

Encoding

Substitution

Groß-/Kleinschreibung

Löschen

Duplizierung

Konvertierung zu Nicht-String

Jede dieser Methoden konvertiert den Inhalt von self in einen Nicht-String.

Zeichen, Bytes und Cluster

Aufteilen

Abgleichen

Numerisch

Strings und Symbole

Iterieren