Computerwissenschaften

Verwendung der „Split“ -Methode in Ruby

Wie Sie vielleicht bereits wissen, sind Zeichenfolgen in Ruby sogenannte erstklassige Objekte. die eine Reihe von Methoden für Abfragen und Manipulationen verwenden.

Eine der grundlegendsten Aktionen zur Manipulation von Zeichenfolgen besteht darin, eine Zeichenfolge in mehrere Unterzeichenfolgen aufzuteilen. Dies wäre beispielsweise der Fall, wenn Sie eine Zeichenfolge wie „foo, bar, baz“ haben und die drei Zeichenfolgen „foo“, „bar“ und „baz“ möchten . Die Split- Methode der String-Klasse kann dies für Sie erreichen.

 

Die grundlegende Verwendung von „Split“

Die grundlegendste Verwendung der Split- Methode besteht darin, eine Zeichenfolge basierend auf einem einzelnen Zeichen oder einer statischen Folge von Zeichen zu teilen. Wenn das erste Argument von split eine Zeichenfolge ist, werden die Zeichen in dieser Zeichenfolge als Trennzeichen für Zeichenfolgentrennzeichen verwendet, während in durch Kommas getrennten Daten das Komma zum Trennen von Daten verwendet wird.

#! / usr / bin / env ruby
str=“foo, bar, baz“
setzt str.split („,“)

$ ./1.rb
foo
bar
baz

 

Fügen Sie Flexibilität mit regulären Ausdrücken hinzu

Es gibt einfachere Möglichkeiten, die Zeichenfolge abzugrenzen . Durch die Verwendung eines regulären Ausdrucks als Trennzeichen wird die Aufteilungsmethode wesentlich flexibler.

Nehmen Sie zum Beispiel wieder die Zeichenfolge „foo, bar, baz“ . Nach dem ersten Komma steht ein Leerzeichen, nach dem zweiten jedoch nicht. Wenn die Zeichenfolge „,“ als Trennzeichen verwendet wird, ist am Anfang der Zeichenfolge „bar“ noch ein Leerzeichen vorhanden. Wenn die Zeichenfolge „,“ verwendet wird (mit einem Leerzeichen nach dem Komma), stimmt sie nur mit dem ersten Komma überein, da das zweite Komma kein Leerzeichen hinter sich hat. Es ist sehr einschränkend.

Die Lösung für dieses Problem besteht darin, anstelle einer Zeichenfolge einen regulären Ausdruck als Trennzeichenargument zu verwenden. Mit regulären Ausdrücken können Sie nicht nur statische Zeichenfolgen, sondern auch eine unbestimmte Anzahl von Zeichen und optionale Zeichen abgleichen.

 

Regelmäßige Ausdrücke schreiben

Wenn Sie einen regulären Ausdruck für Ihr Trennzeichen schreiben, müssen Sie zunächst in Worten beschreiben, was das Trennzeichen ist. In diesem Fall ist der Ausdruck „ein Komma, auf das möglicherweise ein oder mehrere Leerzeichen folgen“ sinnvoll.

Diese Regex enthält zwei Elemente: das Komma und die optionalen Leerzeichen. Die Leerzeichen verwenden den Quantifizierer * (Stern oder Sternchen), was „Null oder mehr“ bedeutet. Jedes Element, das davor steht, stimmt null oder mehrmals überein. Zum Beispiel stimmt der reguläre Ausdruck / a * / mit einer Folge von null oder mehr ‚a‘-Zeichen überein.

#! / usr / bin / env ruby
str=“foo, bar, baz“
setzt str.split (/, * /)

$ ./2.rb
foo
bar
baz

 

Begrenzung der Anzahl der Teilungen

Stellen Sie sich eine durch Kommas getrennte Wertzeichenfolge vor, z. B. „10,20,30, Dies ist eine beliebige Zeichenfolge“ . Dieses Format besteht aus drei Zahlen, gefolgt von einer Kommentarspalte. Diese Kommentarspalte kann beliebigen Text enthalten, einschließlich Text mit Kommas. Um zu verhindern , Split aus dem Splitting den Text dieser Spalte können wir eine maximale Anzahl von Spalten zu Split eingestellt.

Hinweis: Dies funktioniert nur, wenn die Kommentarzeichenfolge mit dem beliebigen Text die letzte Spalte der Tabelle ist.

Um die Anzahl der Teilungen zu begrenzen, die die Teilungsmethode ausführt, übergeben Sie die Anzahl der Felder in der Zeichenfolge als zweites Argument wie folgt an die Teilungsmethode:

#! / usr / bin / env ruby
str=“10,20,30, Ten, Twenty and Thirty“
setzt str.split (/, * /, 4)

$ ./3.rb
10
20
30
Zehn, Zwanzig und Dreißig

 

Bonusbeispiel!

Was wäre, wenn Sie split verwenden  möchten  , um alle Elemente außer dem allerersten zu erhalten?

Es ist eigentlich sehr einfach:

zuerst * rest=ex.split (/, /)

 

Die Grenzen kennen

Die Split-Methode weist einige ziemlich große Einschränkungen auf.

Nehmen Sie zum Beispiel die Zeichenfolge  ’10, 20, „Bob, Eve and Mallory“, 30 ‚ . Was beabsichtigt ist, sind zwei Zahlen, gefolgt von einer Zeichenfolge in Anführungszeichen (die Kommas enthalten kann) und einer weiteren Zahl. Split kann diese Zeichenfolge nicht korrekt in Felder unterteilen.

Dazu muss der Zeichenfolgenscanner zustandsbehaftet sein. Dies  bedeutet, dass er sich daran erinnern kann, ob er sich in einer Zeichenfolge in Anführungszeichen befindet oder nicht. Der geteilte Scanner ist nicht zustandsbehaftet und kann daher Probleme wie dieses nicht lösen.

Similar Posts

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.