Computerwissenschaften

Grundlegendes zu ‚String Literals‘ in Ruby

String Objekte enthalten Sequenzen geordnete von Bytes, die typischerweise Zeichen, in der Regel Stücke von Menschen lesbaren Text zu bilden. Sie sind in allen Programmiersprachen ein sehr verbreiteter Objekttyp, und Ruby bietet eine Reihe von High-Level- und einige Low-Level-Möglichkeiten zum Erstellen, Zugreifen auf und Bearbeiten von String-Objekten.

Strings werden meistens mit einem String-Literal erstellt . Ein Literal ist eine spezielle Syntax in der Ruby-Sprache, mit der ein Objekt eines bestimmten Typs erstellt wird. Zum Beispiel 23 ist eine wörtliche , die eine schafft Fixnum – Objekt. Für String-Literale gibt es verschiedene Formen.

 

Einfache Anführungszeichen und doppelte Anführungszeichen

Die meisten Sprachen haben ein ähnliches String-Literal, daher ist dies möglicherweise bekannt. Die Arten von Anführungszeichen ‚(einfaches Anführungszeichen, Apostroph oder hartes Anführungszeichen ) und „(doppeltes Anführungszeichen oder weiches Anführungszeichen ) werden verwendet, um Zeichenfolgenliterale einzuschließen. Alles zwischen ihnen wird in Zeichenfolgenobjekte umgewandelt. Das folgende Beispiel zeigt dies.

Es gibt jedoch einige Unterschiede zwischen einfachen und doppelten Anführungszeichen. Doppelte oder weiche Anführungszeichen ermöglichen etwas Magie hinter den Kulissen. Am nützlichsten ist die Interpolation innerhalb von Zeichenfolgen, die zum Einfügen des Werts einer Variablen in die Mitte einer Zeichenfolge nützlich ist. Dies wird durch die Verwendung der Sequenz # {…} erreicht . Im folgenden Beispiel werden Sie nach Ihrem Namen gefragt und begrüßt. Verwenden Sie die Interpolation, um Ihren Namen in das gedruckte Zeichenfolgenliteral einzufügen.

Beachten Sie, dass jeder Code in geschweifte Klammern gesetzt werden kann, nicht nur Variablennamen. Ruby wertet diesen Code aus und versucht, ihn in die Zeichenfolge einzufügen, was auch immer zurückgegeben wird. So könnte man genauso gut sagen : „Hallo, # {gets.chomp}“ und vergessen Sie den Namen Variable. Es ist jedoch empfehlenswert, keine langen Ausdrücke in die geschweiften Klammern zu setzen.

Einfache Anführungszeichen, Apostrophe oder harte Anführungszeichen sind viel restriktiver. Innerhalb der einfachen Anführungszeichen führt Ruby keine anderen Interpolations- oder Escape-Sequenzen durch, als das einfache Anführungszeichen und den Backslash selbst ( \ ‚ bzw. \\ ) zu maskieren . Wenn Sie keine Interpolation verwenden möchten, wird empfohlen, häufig einfache Anführungszeichen zu verwenden.

Im folgenden Beispiel wird versucht, eine Variable in einfache Anführungszeichen zu interpolieren.

Wenn Sie dies ausführen, erhalten Sie keine Fehlermeldung, aber was wird gedruckt?

Die Interpolationssequenz wurde uninterpretiert durchlaufen.

 

Wann sollte ich einfache und doppelte Anführungszeichen verwenden?

Das ist eine Frage des Stils. Einige bevorzugen es, die ganze Zeit doppelte Anführungszeichen zu verwenden, es sei denn, sie werden unpraktisch. Andere würden lieber einfache Anführungszeichen verwenden, es sei denn, das Interpolationsverhalten ist beabsichtigt. Es ist nicht von Natur aus gefährlich , ständig doppelte Anführungszeichen zu verwenden, aber es erleichtert das Lesen von Code. Sie müssen beim Lesen von Code keine Zeichenfolge lesen, wenn Sie wissen, dass keine Interpolationen darin enthalten sind, da Sie wissen, dass die Zeichenfolge selbst keine Nebenwirkungen hat. Welche String-Literalform Sie verwenden, liegt also bei Ihnen. Hier gibt es keinen richtigen und falschen Weg.

 

Escape-Sequenzen

Was ist, wenn Sie in einem Zeichenfolgenliteral ein Anführungszeichen einfügen möchten? Zum Beispiel wird die Zeichenfolge „Steve sagte“ Moo! „  Nicht funktionieren. Und “ Kann das auch nicht anfassen! “ Diese beiden Zeichenfolgen enthalten das Anführungszeichen in der Zeichenfolge, wodurch das Zeichenfolgenliteral effektiv beendet wird und ein Syntaxfehler verursacht wird. Sie können Anführungszeichen wechseln, wie z. B. „Steve sagte“ Moo! „“ , Aber das löst das Problem nicht wirklich Stattdessen können Sie jedes Anführungszeichen in der Zeichenfolge maskieren, und es verliert seine spezielle Bedeutung (in diesem Fall besteht die spezielle Bedeutung darin, die Zeichenfolge zu schließen).

Um einem Zeichen zu entkommen, stellen Sie ihm das Backslash-Zeichen voran. Das Backslash-Zeichen weist Ruby an, alle speziellen Bedeutungen des nächsten Zeichens zu ignorieren. Wenn es sich um ein übereinstimmendes Anführungszeichen handelt, beenden Sie die Zeichenfolge nicht. Wenn es sich um ein Hash-Zeichen handelt, starten Sie keinen Interpolationsblock. Das folgende Beispiel zeigt diese Verwendung von Backslash, um Sonderzeichen zu umgehen.

Das Backslash-Zeichen kann verwendet werden, um eine spezielle Bedeutung aus dem folgenden Zeichen zu entfernen. Verwirrenderweise kann es auch verwendet werden, um ein spezielles Verhalten in Zeichenfolgen in doppelten Anführungszeichen zu kennzeichnen. Die meisten dieser speziellen Verhaltensweisen haben mit dem Einfügen von Zeichen und Bytesequenzen zu tun, die nicht typisiert oder visuell dargestellt werden können. Nicht alle Strings sind Zeichenketten oder enthalten möglicherweise Steuersequenzen, die für das Terminal und nicht für den Benutzer bestimmt sind. Ruby bietet Ihnen die Möglichkeit, diese Arten von Zeichenfolgen mithilfe des Backslash-Escape-Zeichens einzufügen.

  • \ n – Ein Zeilenumbruchzeichen. Die Puts- Methode führt dies automatisch aus. Wenn Sie jedoch eine in die Mitte einer Zeichenfolge einfügen möchten oder die Zeichenfolge für etwas anderes als die Puts- Methode bestimmt ist, können Sie damit eine neue Zeile in eine Zeichenfolge einfügen.
  • \ t – Ein Tabulatorzeichen. Das Tabulatorzeichen bewegt den Cursor (auf den meisten Terminals) auf ein Vielfaches von 8, daher ist dies sehr nützlich für die Anzeige von Tabellendaten. Es gibt jedoch bessere Möglichkeiten, dies zu tun, und die Verwendung des Tabulatorzeichens wird als etwas archaisch oder hackisch angesehen.
  • \ nnn – Ein Backslash gefolgt von 3 Zahlen kennzeichnet ein ASCII-Zeichen, das durch 3 Oktalziffern dargestellt wird. Warum oktal? Meist aus historischen Gründen.
  • \ xnn – Ein Backslash, ein x und 2 hexadezimale Ziffern. Wie die Oktalversion, nur mit hexadezimalen Ziffern.

Sie werden die meisten davon wahrscheinlich nie verwenden, wissen aber, dass sie existieren. Und denken Sie auch daran, dass sie nur in Zeichenfolgen mit doppelten Anführungszeichen funktionieren.

Auf der nächsten Seite werden mehrzeilige Zeichenfolgen und eine alternative Syntax für Zeichenfolgenliterale erläutert.

 

Mehrzeilige Saiten

Die meisten Sprachen erlauben keine mehrzeiligen String-Literale, Ruby jedoch. Es gibt keine Notwendigkeit , die Saiten zu beenden und Anfügen mehr Strings für die nächste Zeile, behandelt Ruby – mehrzeiligen Stringliterale ganz gut mit der Standard  – Syntax .

 

Alternative Syntax

Wie bei den meisten anderen Literalen bietet Ruby eine alternative Syntax für String-Literale. Wenn Sie beispielsweise viele Anführungszeichen in Ihren Literalen verwenden, möchten Sie möglicherweise diese Syntax verwenden. Wenn Sie diese Syntax verwenden, ist dies eine Frage des Stils. Sie werden normalerweise nicht für Zeichenfolgen benötigt.

Um die alternative Syntax zu verwenden, verwenden Sie die folgende Sequenz für Zeichenfolgen in einfachen Anführungszeichen  % q {…} . Verwenden Sie in ähnlicher Weise die folgende Syntax für Zeichenfolgen in doppelten Anführungszeichen  % Q {…} . Diese alternative Syntax folgt denselben Regeln wie ihre „normalen“ Cousins. Beachten Sie auch, dass Sie anstelle von geschweiften Klammern beliebige Zeichen verwenden können. Wenn Sie eine Klammer, eine eckige Klammer, eine spitze Klammer oder eine Klammer verwenden, beendet das übereinstimmende Zeichen das Literal. Wenn Sie keine übereinstimmenden Zeichen verwenden möchten, können Sie jedes andere Symbol verwenden (alles, was kein Buchstabe oder keine Zahl ist). Das Literal wird mit einem anderen Symbol des gleichen Symbols geschlossen. Das folgende Beispiel zeigt Ihnen verschiedene Möglichkeiten, diese Syntax zu verwenden.

Die alternative Syntax funktioniert auch als mehrzeilige Zeichenfolge.

Similar Posts

Schreibe einen Kommentar

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