Ruby String
In Ruby werden String-Objekte verwendet, um Sequenzen von einem oder mehreren Bytes zu speichern oder zu bearbeiten.
Ruby-Strings werden in Strings mit einfachen Anführungszeichen (') und Strings mit doppelten Anführungszeichen (") unterteilt. Der Unterschied besteht darin, dass Strings mit doppelten Anführungszeichen mehr Escape-Zeichen unterstützen.
Strings mit einfachen Anführungszeichen
Die einfachsten Strings sind Strings mit einfachen Anführungszeichen, d. h. Strings, die in einfache Anführungszeichen eingeschlossen sind:
Wenn Sie ein einfaches Anführungszeichen innerhalb eines Strings mit einfachen Anführungszeichen verwenden müssen, müssen Sie einen Backslash (\) innerhalb des Strings mit einfachen Anführungszeichen verwenden, damit der Ruby-Interpreter dieses einfache Anführungszeichen nicht als Abschluss des Strings behandelt:
Ein Backslash kann auch einen anderen Backslash maskieren, sodass der zweite Backslash selbst nicht als Escape-Zeichen interpretiert wird.
Die folgenden Merkmale beziehen sich auf Strings in Ruby.
Strings mit doppelten Anführungszeichen
In doppelt gequoteten Zeichenketten können wir#{}das Rautezeichen und geschweifte Klammern verwenden, um Ausdrücke auszuwerten:
Variablen in Zeichenketten einbetten:
Beispiele
Ausprobieren »
Das obige Beispiel gibt das folgende Ergebnis aus:
你好 Joe, Mary 在哪?
Mathematische Operationen in Zeichenketten durchführen:
Beispiele
Ausprobieren »
Das obige Beispiel gibt das folgende Ergebnis aus:
x 的值为 12 x + y 的值为 48 x + y + z 的平均值为 40
Ruby unterstützt auch Zeichenkettenliterale, die durch %q und %Q eingeleitet werden. %q verwendet die Quotierungsregeln für einfache Anführungszeichen, während %Q die Quotierungsregeln für doppelte Anführungszeichen verwendet, gefolgt von einem Startbegrenzungszeichen wie ( ! [ { usw. und einem entsprechenden Endbegrenzungszeichen wie } ] ).
Das auf q oder Q folgende Zeichen ist das Begrenzungszeichen. Das Begrenzungszeichen kann ein beliebiges nicht alphanumerisches Einzelbyte-Zeichen sein, wie etwa [, {, (, <, !, usw. Die Zeichenkette wird gelesen, bis ein passendes schließendes Begrenzungszeichen gefunden wird.
Beispiele
Ausprobieren »
Das obige Beispiel gibt das folgende Ergebnis aus:
Ruby 的字符串可以使用 '' 和 ""。 Ruby 的字符串可以使用 '' 和 ""。
Escape-Zeichen
Die folgende Tabelle listet Escape-Zeichen oder nicht druckbare Zeichen auf, die mit der Backslash-Notation maskiert werden können.
Hinweis:In einem String mit doppelten Anführungszeichen werden Escape-Zeichen interpretiert. In einem String mit einfachen Anführungszeichen werden Escape-Zeichen nicht interpretiert und unverändert ausgegeben.
| Backslash-Notation | Hexadezimalzeichen | Beschreibung |
|---|---|---|
| \a | 0x07 | Alarm (Glocke) |
| \b | 0x08 | Rücktaste |
| \cx | Strg-x | |
| \C-x | Strg-x | |
| \e | 0x1b | Escape |
| \f | 0x0c | Seitenvorschub |
| \M-\C-x | Meta-Strg-x | |
| \n | 0x0a | Zeilenumbruch |
| \nnn | Oktaldarstellung, wobei n im Bereich von 0 bis 7 liegt | |
| \r | 0x0d | Wagenrücklauf |
| \s | 0x20 | Speicher |
| \t | 0x09 | Tab |
| \v | 0x0b | Vertikaltabulator |
| \x | Zeichen x | |
| \xnn | Hexadezimale Darstellung, wobei n im Bereich von 0-9, a-f oder A-F liegt |
Zeichenkodierung
Der Standardzeichensatz von Ruby ist ASCII, wobei Zeichen durch ein einzelnes Byte dargestellt werden können. Wenn Sie UTF-8 oder einen anderen modernen Zeichensatz verwenden, können Zeichen durch ein bis vier Bytes dargestellt werden.
Sie können $KCODE am Anfang des Programms verwenden, um den Zeichensatz zu ändern, wie unten gezeigt:
$KCODE = 'u'
Im Folgenden sind die möglichen Werte von $KCODE aufgeführt.
| Kodierung | Beschreibung |
|---|---|
| a | ASCII (gleich wie none). Dies ist die Standardeinstellung. |
| e | EUC. |
| n | None (gleich wie ASCII). |
| u | UTF-8. |
Integrierte String-Methoden
Wir benötigen eine Instanz des String-Objekts, um String-Methoden aufzurufen. Im Folgenden wird gezeigt, wie man eine Instanz eines String-Objekts erstellt:
Dies gibt ein neues String-Objekt zurück, das eine Kopie vonstrenthält. Nun können wir mitstr, dem Objekt, jede verfügbare Instanzmethode aufrufen. Zum Beispiel:
Beispiele
Dies erzeugt das folgende Ergebnis:
this is test
Die folgenden sind die öffentlichen String-Methoden (vorausgesetzt, str ist ein String-Objekt):
| Nein. | Methode & Beschreibung |
|---|---|
| 1 | str % arg Formatiert eine Zeichenkette unter Verwendung einer Formatspezifikation. Wenn arg mehr als eine Ersetzung enthält, muss arg ein Array sein. Weitere Informationen zu Formatspezifikationen findest du unter sprintf im Modul Kernel. |
| 2 | str * integer Gibt eine neue Zeichenkette zurück, die integer Kopien von str enthält. Mit anderen Worten, str wird integer-mal wiederholt. |
| 3 | str + other_str Verkettet other_str mit str. |
| 4 | str << obj Hängt ein Objekt an die Zeichenkette an. Wenn das Objekt ein Fixnum mit einem Wert zwischen 0 und 255 ist, wird es in ein Zeichen umgewandelt. Vergleiche dies mit concat. |
| 5 | str <=> other_str Vergleicht str mit other_str und gibt -1 (kleiner als), 0 (gleich) oder 1 (größer als) zurück. Beim Vergleich wird zwischen Groß- und Kleinschreibung unterschieden. |
| 6 | str == obj Prüft die Gleichheit von str und obj. Wenn obj keine Zeichenkette ist, wird false zurückgegeben; wenn str <=> obj 0 zurückgibt, wird true zurückgegeben. |
| 7 | str =~ obj Vergleicht str mit dem regulären Ausdrucksmuster obj. Gibt die Position zurück, an der die Übereinstimmung beginnt, andernfalls false. |
| 8 | str[position] # Hinweis: gibt den ASCII-Code statt eines Zeichens zurück str[start, length] str[start..end] str[start...end] Extrahiert einen Teilstring mithilfe eines Index. |
| 9 | str.capitalize Wandelt den ersten Buchstaben einer Zeichenkette für die Anzeige in Großbuchstaben und den Rest in Kleinbuchstaben um. |
| 10 | str.capitalize! Wie capitalize, aber capitalize! gibt nil zurück, wenn keine Änderungen vorgenommen werden. |
| 11 | str.casecmp Zeichenkettenvergleich ohne Berücksichtigung der Groß-/Kleinschreibung. |
| 12 | str.center Zentriert die Zeichenkette. |
| 13 | str.chomp Entfernt das Datensatz-Trennzeichen ($/) vom Ende der Zeichenkette, normalerweise \n. Wenn kein Datensatz-Trennzeichen vorhanden ist, bewirkt es nichts. |
| 14 | str.chomp! Wie chomp, aber str wird geändert und zurückgegeben. |
| 15 | str.chop Entfernt das letzte Zeichen aus str. |
| 16 | str.chop! Wie chop, aber str wird geändert und zurückgegeben. |
| 17 | str.concat(other_str) Verkettet other_str mit str. |
| 18 | str.count(str, ...) Zählt ein oder mehrere Zeichensätze. Wenn mehrere Zeichensätze vorhanden sind, zählt es die Schnittmenge dieser Sätze. |
| 19 | str.crypt(other_str) Wendet einen kryptografischen Einweg-Hash auf str an. Das Argument ist eine Zeichenfolge mit zwei Zeichen, wobei jedes Zeichen im Bereich a-z, A-Z, 0-9, . oder / liegt. |
| 20 | str.delete(other_str, ...) Gibt eine Kopie von str zurück, bei der alle Zeichen gelöscht wurden, die in der Schnittmenge der Argumente enthalten sind. |
| 21 | str.delete!(other_str, ...) Wie delete, aber str wird geändert und zurückgegeben. |
| 22 | str.downcase Gibt eine Kopie von str zurück, bei der alle Großbuchstaben durch Kleinbuchstaben ersetzt wurden. |
| 23 | str.downcase! Wie downcase, aber str wird geändert und zurückgegeben. |
| 24 | str.dump Gibt eine Version von str zurück, bei der alle nicht druckbaren Zeichen durch die \nnn-Notation ersetzt und alle Sonderzeichen escaped werden. |
| 25 | str.each(separator=$/) { |substr| block } Teilt str unter Verwendung des Arguments als Datensatztrenner (Standard ist $/), wobei jeder Teilstring an den angegebenen Block übergeben wird. |
| 26 | str.each_byte { |fixnum| block } Übergibt jedes Byte von str an den Block und gibt jedes Byte in Dezimalnotation zurück. |
| 27 | str.each_line(separator=$/) { |substr| block } Teilt str unter Verwendung des Arguments als Datensatztrenner (Standard ist $/), wobei jeder Teilstring an den angegebenen Block übergeben wird. |
| 28 | str.empty? Gibt true zurück, wenn str leer ist (d. h. eine Länge von 0 hat). |
| 29 | str.eql?(other) Zwei Strings sind gleich, wenn sie dieselbe Länge und denselben Inhalt haben. |
| 30 | str.gsub(pattern, replacement) [oder] str.gsub(pattern) { |match| block } Gibt eine Kopie von str zurück, bei der alle Vorkommen von pattern durch replacement oder den Wert von block ersetzt werden. pattern ist normalerweise ein Regexp; wenn es ein String ist, werden keine Metazeichen für reguläre Ausdrücke interpretiert (d. h. /\d/ stimmt mit einer Ziffer überein, aber '\d' stimmt mit einem Backslash gefolgt von einem 'd' überein). |
| 31 | str[fixnum] [or] str[fixnum,fixnum] [or] str[range] [or] str[regexp] [or] str[regexp, fixnum] [or] str[other_str] Verwenden Sie die folgenden Parameterreferenzen für str: Wenn der Parameter ein Fixnum ist, geben Sie die Zeichenkodierung des Fixnums zurück; wenn der Parameter zwei Fixnums sind, geben Sie eine Teilzeichenkette zurück, die beim Offset (dem ersten Fixnum) beginnt und bis zur Länge (dem zweiten Fixnum) reicht; wenn der Parameter ein Bereich ist, geben Sie eine Teilzeichenkette innerhalb dieses Bereichs zurück; wenn der Parameter ein Regexp ist, geben Sie den Teil der Zeichenkette zurück, der übereinstimmt; wenn der Parameter ein Regexp mit einem Fixnum ist, geben Sie die Übereinstimmungsdaten an der Fixnum-Position zurück; wenn der Parameter other_str ist, geben Sie die Teilzeichenkette zurück, die mit other_str übereinstimmt. Ein negatives Fixnum beginnt am Ende der Zeichenkette bei -1. |
| 32 | str[fixnum] = fixnum [or] str[fixnum] = new_str [or] str[fixnum, fixnum] = new_str [or] str[range] = aString [or]
str[regexp] =new_str [or] str[regexp, fixnum] =new_str [or] str[other_str] = new_str ] Ersetzt die gesamte Zeichenkette oder einen Teil der Zeichenkette. Synonym für slice!. |
| 33 | str.gsub!(pattern, replacement) [or] str.gsub!(pattern) { |match| block } Führt die Ersetzungen von String#gsub durch, gibt str zurück oder gibt nil zurück, wenn keine Ersetzung durchgeführt wurde. |
| 34 | str.hash Gibt einen Hash basierend auf der Länge und dem Inhalt der Zeichenkette zurück. |
| 35 | str.hex Behandelt die führenden Zeichen von str als eine Zeichenkette aus Hexadezimalziffern (ein optionales Vorzeichen und ein optionales 0x) und gibt die entsprechende Zahl zurück. Gibt bei einem Fehler null zurück. |
| 36 | str.include? other_str [or] str.include? fixnum Gibt true zurück, wenn str die angegebene Zeichenkette oder das angegebene Zeichen enthält. |
| 37 | str.index(substring [, offset]) [oder] str.index(fixnum [, offset]) [oder] str.index(regexp [, offset]) Gibt den Index des ersten Vorkommens des angegebenen Teilstrings, Zeichens (fixnum) oder Musters (regexp) in str zurück. Gibt nil zurück, wenn es nicht gefunden wird. Wenn ein zweiter Parameter angegeben wird, gibt er die Position in der Zeichenkette an, an der die Suche beginnen soll. |
| 38 | str.insert(index, other_str) Fügt other_str vor dem Zeichen am angegebenen Index ein und ändert dabei str. Negative Indexwerte zählen vom Ende der Zeichenkette und fügen nach dem angegebenen Zeichen ein. Die Absicht besteht darin, mit dem Einfügen einer Zeichenkette am angegebenen Index zu beginnen. |
| 39 | str.inspect Gibt eine druckbare Version von str zurück, wobei Sonderzeichen maskiert sind. |
| 40 | str.intern [oder] str.to_sym Gibt das str entsprechende Symbol zurück und erstellt das Symbol, falls es zuvor nicht existiert. |
| 41 | str.length Gibt die Länge von str zurück. Vergleiche es mit size. |
| 42 | str.ljust(integer, padstr=' ') Wenn integer größer als die Länge von str ist, gib einen neuen String der Länge integer zurück, wobei str linksbündig ausgerichtet und mit padstr aufgefüllt ist. Andernfalls gib str zurück. |
| 43 | str.lstrip Gib eine Kopie von str zurück, bei der führender Leerraum entfernt wurde. |
| 44 | str.lstrip! Entferne führenden Leerraum aus str oder gib nil zurück, wenn es keine Änderung gibt. |
| 45 | str.match(pattern) Wenn pattern kein regulärer Ausdruck ist, konvertiere pattern in einen Regexp und rufe dann dessen match-Methode auf str auf. |
| 46 | str.oct Behandle die führenden Zeichen von str als eine Zeichenkette aus Dezimalziffern (ein optionales Vorzeichen) und gib die entsprechende Zahl zurück. Gib 0 zurück, wenn die Konvertierung fehlschlägt. |
| 47 | str.replace(other_str) Ersetze den Inhalt von str durch die entsprechenden Werte aus other_str. |
| 48 | str.reverse Gibt eine neue Zeichenkette zurück, die die Umkehrung von str ist. |
| 49 | str.reverse! Kehrt str um, ändert str an Ort und Stelle und gibt es zurück. |
| 50 | str.rindex(substring [, fixnum]) [or] str.rindex(fixnum [, fixnum]) [or] str.rindex(regexp [, fixnum]) Gibt den Index des letzten Vorkommens der angegebenen Teilzeichenkette, des Zeichens (fixnum) oder des Musters (regexp) in str zurück. Gibt nil zurück, wenn er nicht gefunden wird. Wenn ein zweiter Parameter angegeben wird, gibt er die Position in der Zeichenkette an, an der die Suche enden soll. Zeichen jenseits dieses Punktes werden nicht berücksichtigt. |
| 51 | str.rjust(integer, padstr=' ') Wenn integer größer als die Länge von str ist, gibt eine neue Zeichenkette der Länge integer zurück, in der str rechtsbündig ausgerichtet und mit padstr aufgefüllt ist. Andernfalls gibt str zurück. |
| 52 | str.rstrip Gibt eine Kopie von str zurück, bei der abschließender Leerraum entfernt wurde. |
| 53 | str.rstrip! Entfernt nachfolgenden Leerraum aus str oder gibt nil zurück, wenn keine Änderung vorliegt. |
| 54 | str.scan(pattern) [oder] str.scan(pattern) { |match, ...| block } Beide Formen gleichen pattern (das ein Regexp oder ein String sein kann) mit str ab. Für jede Übereinstimmung wird ein Ergebnis erzeugt und entweder dem Ergebnisarray hinzugefügt oder an den Block übergeben. Wenn pattern keine Gruppen enthält, besteht jedes einzelne Ergebnis aus der übereinstimmenden Zeichenkette, $&. Wenn pattern Gruppen enthält, ist jedes einzelne Ergebnis ein Array, das jeden Gruppeneintrag enthält. |
| 55 | str.slice(fixnum) [oder] str.slice(fixnum, fixnum) [oder] str.slice(range) [oder] str.slice(regexp) [oder] str.slice(regexp, fixnum) [oder] str.slice(other_str) Siehe str[fixnum] usw. str.slice!(fixnum) [oder] str.slice!(fixnum, fixnum) [oder] str.slice!(range) [oder] str.slice!(regexp) [oder] str.slice!(other_str) Löscht den angegebenen Teil aus str und gibt den gelöschten Teil zurück. Wenn der Wert außerhalb des gültigen Bereichs liegt, erzeugt die Form mit einem Fixnum-Parameter einen IndexError. Die Range-Form erzeugt einen RangeError, und die Regexp- und String-Formen ignorieren die Aktion. |
| 56 | str.split(pattern=$;, [limit]) Teilt str anhand eines Trennzeichens in Teilstrings auf und gibt ein Array dieser Teilstrings zurück. Wennpatternein String ist, wird er beim Aufteilen von str als Trennzeichen verwendet. Wenn pattern ein einzelnes Leerzeichen ist, wird str anhand von Leerraum aufgeteilt, wobei führender Leerraum und aufeinanderfolgende Leerraumzeichen ignoriert werden. Wennpatternein Regexp ist, wird str an Stellen aufgeteilt, an denen pattern übereinstimmt. Wenn pattern mit einer Zeichenkette der Länge null übereinstimmt, wird str in einzelne Zeichen aufgeteilt. Wenn derpatternParameter weggelassen wird, wird der Wert von $; verwendet. Wenn $; nil ist (der Standardwert), wird str anhand von Leerraum aufgeteilt, als ob ` ` als Trennzeichen angegeben wäre. Wenn derlimitParameter weggelassen wird, werden abschließende Nullfelder unterdrückt. Wenn limit eine positive Zahl ist, wird höchstens diese Anzahl von Feldern zurückgegeben (wenn limit 1 ist, wird die gesamte Zeichenkette als einziger Eintrag im Array zurückgegeben). Wenn limit eine negative Zahl ist, ist die Anzahl der zurückgegebenen Felder unbegrenzt, und abschließende Nullfelder werden nicht unterdrückt. |
| 57 | str.squeeze([other_str]*) Erstellt eine Menge von Zeichen aus den other_str-Parametern mithilfe des für String#count beschriebenen Verfahrens. Gibt eine neue Zeichenkette zurück, in der identische Zeichen, die in der Menge vorkommen, durch ein einzelnes Zeichen ersetzt werden. Wenn keine Argumente angegeben werden, werden alle identischen Zeichen durch ein einzelnes Zeichen ersetzt. |
| 58 | str.squeeze!([other_str]*) Wie squeeze, aber str wird an Ort und Stelle geändert und zurückgegeben, oder nil, wenn keine Änderung erfolgt. |
| 59 | str.strip Gibt eine Kopie von str zurück, bei der führender und abschließender Leerraum entfernt wurde. |
| 60 | str.strip! Entfernt führende und nachgestellte Leerzeichen aus str oder gibt nil zurück, wenn es keine Änderung gibt. |
| 61 | str.sub(pattern, replacement) [oder] str.sub(pattern) { |match| block } Gibt eine Kopie von str zurück, bei der das erste Vorkommen von pattern durch replacement oder den Wert des Blocks ersetzt wurde. pattern ist normalerweise ein Regexp; wenn es ein String ist, werden keine Metazeichen regulärer Ausdrücke interpretiert. |
| 62 | str.sub!(pattern, replacement) [oder] str.sub!(pattern) { |match| block } Führt die Ersetzungen von String#sub aus und gibt str zurück oder gibt nil zurück, wenn keine Ersetzung vorgenommen wurde. |
| 63 | str.succ [oder] str.next Gibt den Nachfolger von str zurück. |
| 64 | str.succ! [oder] str.next! Entspricht String#succ, aber str wird an Ort und Stelle geändert und zurückgegeben. |
| 65 | str.sum(n=16) Gibt die n-Bit-Prüfsumme der Zeichen in str zurück, wobei n der optionale Fixnum-Parameter ist und standardmäßig 16 beträgt. Das Ergebnis ist einfach die Summe der Binärwerte jedes Zeichens in str, modulo 2n - 1. Dies ist keine besonders gute Prüfsumme. |
| 66 | str.swapcase Gibt eine Kopie von str zurück, bei der alle Großbuchstaben in Kleinbuchstaben und alle Kleinbuchstaben in Großbuchstaben umgewandelt wurden. |
| 67 | str.swapcase! Entspricht String#swapcase, aber str wird an Ort und Stelle geändert und zurückgegeben, oder nil, wenn keine Änderung erfolgt. |
| 68 | str.to_f Gibt das Ergebnis der Interpretation der führenden Zeichen von str als Gleitkommazahl zurück. Zusätzliche Zeichen nach dem Ende der signifikanten Ziffern werden ignoriert. Wenn am Anfang von str keine gültige Zahl steht, wird 0.0 zurückgegeben. Diese Methode erzeugt keine Ausnahmen. |
| 69 | str.to_i(base=10) Gibt das Ergebnis der Interpretation der führenden Zeichen von str als Ganzzahl zur Basis (Basis 2, 8, 10 oder 16) zurück. Zusätzliche Zeichen nach dem Ende der gültigen Ziffern werden ignoriert. Wenn am Anfang von str keine gültige Zahl steht, wird 0 zurückgegeben. Diese Methode erzeugt keine Ausnahmen. |
| 70 | str.to_s [oder] str.to_str Gibt den Empfänger zurück. |
| 71 | str.tr(from_str, to_str) Gibt eine Kopie von str zurück, wobei die Zeichen in from_str durch die entsprechenden Zeichen in to_str ersetzt werden. Wenn to_str kürzer als from_str ist, wird es mit seinem letzten Zeichen aufgefüllt. Beide Zeichenketten können die Notation c1.c2 verwenden, um Zeichenbereiche darzustellen. Wenn from_str mit ^ beginnt, bedeutet dies alle Zeichen außer den aufgeführten. |
| 72 | str.tr!(from_str, to_str) Entspricht String#tr, aber str wird an Ort und Stelle geändert und zurückgegeben, oder nil, wenn keine Änderung erfolgt. |
| 73 | str.tr_s(from_str, to_str) Verarbeitet str nach den für String#tr beschriebenen Regeln und entfernt dann doppelte Zeichen, die die Übersetzung beeinflussen würden. |
| 74 | str.tr_s!(from_str, to_str) Entspricht String#tr_s, aber str wird an Ort und Stelle geändert und zurückgegeben, oder nil, wenn keine Änderung erfolgt. |
| 75 | str.unpack(format) Dekodiert str (das Binärdaten enthalten kann) gemäß der Formatzeichenkette und gibt ein Array jedes extrahierten Werts zurück. Die Formatzeichen bestehen aus einer Reihe von Ein-Zeichen-Anweisungen. Auf jede Anweisung kann eine Zahl folgen, die angibt, wie oft diese Anweisung wiederholt werden soll. Ein Sternchen (*) verwendet alle verbleibenden Elemente. Auf die Anweisungen sSiIlL kann jeweils ein Unterstrich (_) folgen, um die native Größe der zugrunde liegenden Plattform für den angegebenen Typ zu verwenden; andernfalls wird eine plattformunabhängige, konsistente Größe verwendet. Leerraum in der Formatzeichenkette wird ignoriert. |
| 76 | str.upcase Gibt eine Kopie von str zurück, in der alle Kleinbuchstaben durch Großbuchstaben ersetzt werden. Die Operation ist umgebungsunabhängig; nur die Zeichen a bis z sind betroffen. |
| 77 | str.upcase! Ändert den Inhalt von str in Großbuchstaben oder gibt nil zurück, wenn es keine Änderung gibt. |
| 78 | str.upto(other_str) { |s| block } Iteriert über aufeinanderfolgende Werte, beginnend mit str und endend mit other_str (einschließlich), wobei jeder Wert der Reihe nach an den Block übergeben wird. Die Methode String#succ wird verwendet, um jeden Wert zu erzeugen. |
String-Unpack-Direktiven
Die folgende Tabelle listet die Unpack-Direktiven für die Methode String#unpack auf.
| Anweisung | Return | Beschreibung |
|---|---|---|
| A | String | Entfernt abschließende Nullzeichen und Leerzeichen. |
| a | String | String. |
| B | String | Extrahiert Bits aus jedem Zeichen (höchstwertiges Bit zuerst). |
| b | String | Extrahiert Bits aus jedem Zeichen (niedrigstwertiges Bit zuerst). |
| C | Fixnum | Extrahiert ein Zeichen als vorzeichenlose Ganzzahl. |
| c | Fixnum | Extrahiert ein Zeichen als Ganzzahl. |
| D, d | Float | Behandelt sizeof(double) Zeichen als nativen double. |
| E | Float | Behandle sizeof(double) Zeichen als Little-Endian-Double. |
| e | Float | Behandle sizeof(float) Zeichen als Little-Endian-Float. |
| F, f | Float | Behandle sizeof(float) Zeichen als nativen Float. |
| G | Float | Behandle sizeof(double) Zeichen als Double in Netzwerk-Byte-Reihenfolge. |
| g | Float | Behandle sizeof(float) Zeichen als Float in Netzwerk-Byte-Reihenfolge. |
| H | String | Extrahiere Hexadezimalwert aus jedem Zeichen (höchstwertiges zuerst). |
| h | String | Extrahiere Hexadezimalwert aus jedem Zeichen (niedrigstwertiges zuerst). |
| I | Integer | Behandle aufeinanderfolgende Zeichen der Länge sizeof(int) (durch _ modifiziert) als nativen Integer. |
| i | Integer | Behandle aufeinanderfolgende Zeichen der Länge sizeof(int) (durch _ modifiziert) als vorzeichenbehafteten nativen Integer. |
| L | Integer | Behandle vier (durch _ modifizierte) aufeinanderfolgende Zeichen als vorzeichenlosen nativen Long-Integer. |
| l | Integer | Behandle vier (durch _ modifizierte) aufeinanderfolgende Zeichen als vorzeichenbehafteten nativen Long-Integer. |
| M | String | Quoted-printable. |
| m | String | Base64-Kodierung. |
| N | Integer | Behandle vier Zeichen als unsigned long in Netzwerk-Byte-Reihenfolge. |
| n | Fixnum | Behandle zwei Zeichen als unsigned short in Netzwerk-Byte-Reihenfolge. |
| P | String | Behandle sizeof(char *) Zeichen als Zeiger und gib \emph{len} Zeichen von der referenzierten Stelle zurück. |
| p | String | Behandle sizeof(char *) Zeichen als Zeiger auf eine nullterminierte Zeichenkette. |
| Q | Integer | Behandle acht Zeichen als unsigned quad word (64-bit). |
| q | Integer | Behandle acht Zeichen als signed quad word (64-bit). |
| S | Fixnum | Behandle zwei aufeinanderfolgende Zeichen (unterschiedlich, wenn _ verwendet wird) als unsigned short in nativer Byte-Reihenfolge. |
| s | Fixnum | Behandle zwei aufeinanderfolgende Zeichen (unterschiedlich, wenn _ verwendet wird) als signed short in nativer Byte-Reihenfolge. |
| U | Integer | UTF-8-Zeichen als unsigned integer. |
| u | String | UU-Kodierung. |
| V | Fixnum | Behandle vier Zeichen als unsigned long in Little-Endian-Byte-Reihenfolge. |
| v | Fixnum | Behandle zwei Zeichen als unsigned short in Little-Endian-Byte-Reihenfolge. |
| w | Integer | BER-komprimierte Ganzzahl. |
| X | Ein Zeichen rückwärts überspringen. | |
| x | Ein Zeichen vorwärts überspringen. | |
| Z | String | Wird mit * verwendet, entfernt abschließende Nullen bis zur ersten Null. |
| @ | Den durch den Parameter length angegebenen Offset überspringen. |
Beispiele
Probieren Sie die folgenden Beispiele aus, um verschiedene Daten zu entpacken.