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:

'Dies ist ein String in einem Ruby-Programm'

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:

'Willst\'du nicht O\'Reilly\'s Buch lesen?'

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

#!/usr/bin/ruby # -*- coding: UTF-8 -*- name1 = "Joe" name2 = "Mary" puts "Hallo #{name1}, wo ist #{name2}?"

Ausprobieren »

Das obige Beispiel gibt das folgende Ergebnis aus:

你好 Joe,  Mary 在哪?

Mathematische Operationen in Zeichenketten durchführen:

Beispiele

#!/usr/bin/ruby # -*- coding: UTF-8 -*- x, y, z = 12, 36, 72 puts "Der Wert von x ist #{ x }" puts "Der Wert von x + y ist #{ x + y }" puts "Der Durchschnitt von x + y + z ist #{ (x + y + z)/3 }"

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

#!/usr/bin/ruby # -*- coding: UTF-8 -*- desc1 = %Q{Ruby-Strings können '' und "" verwenden.} desc2 = %q|Ruby-Strings können '' und "" verwenden.| puts desc1 puts desc2

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-NotationHexadezimalzeichenBeschreibung
\a0x07Alarm (Glocke)
\b0x08Rücktaste
\cx Strg-x
\C-x Strg-x
\e0x1bEscape
\f0x0cSeitenvorschub
\M-\C-x Meta-Strg-x
\n0x0aZeilenumbruch
\nnn Oktaldarstellung, wobei n im Bereich von 0 bis 7 liegt
\r0x0dWagenrücklauf
\s0x20Speicher
\t0x09Tab
\v0x0bVertikaltabulator
\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.

KodierungBeschreibung
aASCII (gleich wie none). Dies ist die Standardeinstellung.
eEUC.
nNone (gleich wie ASCII).
uUTF-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:

new [String.new(str="")]

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

#!/usr/bin/ruby myStr = String.new("THIS IS TEST") foo = myStr.downcase puts "#{foo}"

Dies erzeugt das folgende Ergebnis:

this is test

Die folgenden sind die öffentlichen String-Methoden (vorausgesetzt, str ist ein String-Objekt):

Nein.Methode & Beschreibung
1str % 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.
2str * integer
Gibt eine neue Zeichenkette zurück, die integer Kopien von str enthält. Mit anderen Worten, str wird integer-mal wiederholt.
3str + other_str
Verkettet other_str mit str.
4str << 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.
5str <=> 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.
6str == 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.
7str =~ obj
Vergleicht str mit dem regulären Ausdrucksmuster obj. Gibt die Position zurück, an der die Übereinstimmung beginnt, andernfalls false.
8str[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.
9str.capitalize
Wandelt den ersten Buchstaben einer Zeichenkette für die Anzeige in Großbuchstaben und den Rest in Kleinbuchstaben um.
10str.capitalize!
Wie capitalize, aber capitalize! gibt nil zurück, wenn keine Änderungen vorgenommen werden.
11str.casecmp
Zeichenkettenvergleich ohne Berücksichtigung der Groß-/Kleinschreibung.
12str.center
Zentriert die Zeichenkette.
13str.chomp
Entfernt das Datensatz-Trennzeichen ($/) vom Ende der Zeichenkette, normalerweise \n. Wenn kein Datensatz-Trennzeichen vorhanden ist, bewirkt es nichts.
14str.chomp!
Wie chomp, aber str wird geändert und zurückgegeben.
15str.chop
Entfernt das letzte Zeichen aus str.
16str.chop!
Wie chop, aber str wird geändert und zurückgegeben.
17str.concat(other_str)
Verkettet other_str mit str.
18str.count(str, ...)
Zählt ein oder mehrere Zeichensätze. Wenn mehrere Zeichensätze vorhanden sind, zählt es die Schnittmenge dieser Sätze.
19str.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.
20str.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.
21str.delete!(other_str, ...)
Wie delete, aber str wird geändert und zurückgegeben.
22str.downcase
Gibt eine Kopie von str zurück, bei der alle Großbuchstaben durch Kleinbuchstaben ersetzt wurden.
23str.downcase!
Wie downcase, aber str wird geändert und zurückgegeben.
24str.dump
Gibt eine Version von str zurück, bei der alle nicht druckbaren Zeichen durch die \nnn-Notation ersetzt und alle Sonderzeichen escaped werden.
25str.each(separator=$/) { |substr| block }
Teilt str unter Verwendung des Arguments als Datensatztrenner (Standard ist $/), wobei jeder Teilstring an den angegebenen Block übergeben wird.
26str.each_byte { |fixnum| block }
Übergibt jedes Byte von str an den Block und gibt jedes Byte in Dezimalnotation zurück.
27str.each_line(separator=$/) { |substr| block }
Teilt str unter Verwendung des Arguments als Datensatztrenner (Standard ist $/), wobei jeder Teilstring an den angegebenen Block übergeben wird.
28str.empty?
Gibt true zurück, wenn str leer ist (d. h. eine Länge von 0 hat).
29str.eql?(other)
Zwei Strings sind gleich, wenn sie dieselbe Länge und denselben Inhalt haben.
30str.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).
31str[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.
32str[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!.
33str.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.
34str.hash
Gibt einen Hash basierend auf der Länge und dem Inhalt der Zeichenkette zurück.
35str.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.
36str.include? other_str [or] str.include? fixnum
Gibt true zurück, wenn str die angegebene Zeichenkette oder das angegebene Zeichen enthält.
37str.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.
38str.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.
39str.inspect
Gibt eine druckbare Version von str zurück, wobei Sonderzeichen maskiert sind.
40str.intern [oder] str.to_sym
Gibt das str entsprechende Symbol zurück und erstellt das Symbol, falls es zuvor nicht existiert.
41str.length
Gibt die Länge von str zurück. Vergleiche es mit size.
42str.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.
43str.lstrip
Gib eine Kopie von str zurück, bei der führender Leerraum entfernt wurde.
44str.lstrip!
Entferne führenden Leerraum aus str oder gib nil zurück, wenn es keine Änderung gibt.
45str.match(pattern)
Wenn pattern kein regulärer Ausdruck ist, konvertiere pattern in einen Regexp und rufe dann dessen match-Methode auf str auf.
46str.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.
47str.replace(other_str)
Ersetze den Inhalt von str durch die entsprechenden Werte aus other_str.
48str.reverse
Gibt eine neue Zeichenkette zurück, die die Umkehrung von str ist.
49str.reverse!
Kehrt str um, ändert str an Ort und Stelle und gibt es zurück.
50str.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.
51str.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.
52str.rstrip
Gibt eine Kopie von str zurück, bei der abschließender Leerraum entfernt wurde.
53str.rstrip!
Entfernt nachfolgenden Leerraum aus str oder gibt nil zurück, wenn keine Änderung vorliegt.
54str.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.
55str.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.
56str.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.

57str.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.
58str.squeeze!([other_str]*)
Wie squeeze, aber str wird an Ort und Stelle geändert und zurückgegeben, oder nil, wenn keine Änderung erfolgt.
59str.strip
Gibt eine Kopie von str zurück, bei der führender und abschließender Leerraum entfernt wurde.
60str.strip!
Entfernt führende und nachgestellte Leerzeichen aus str oder gibt nil zurück, wenn es keine Änderung gibt.
61str.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.
62str.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.
63str.succ [oder] str.next
Gibt den Nachfolger von str zurück.
64str.succ! [oder] str.next!
Entspricht String#succ, aber str wird an Ort und Stelle geändert und zurückgegeben.
65str.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.
66str.swapcase
Gibt eine Kopie von str zurück, bei der alle Großbuchstaben in Kleinbuchstaben und alle Kleinbuchstaben in Großbuchstaben umgewandelt wurden.
67str.swapcase!
Entspricht String#swapcase, aber str wird an Ort und Stelle geändert und zurückgegeben, oder nil, wenn keine Änderung erfolgt.
68str.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.
69str.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.
70str.to_s [oder] str.to_str
Gibt den Empfänger zurück.
71str.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.
72str.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.
73str.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.
74str.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.
75str.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.
76str.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.
77str.upcase!
Ändert den Inhalt von str in Großbuchstaben oder gibt nil zurück, wenn es keine Änderung gibt.
78str.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.

AnweisungReturnBeschreibung
AStringEntfernt abschließende Nullzeichen und Leerzeichen.
aStringString.
BStringExtrahiert Bits aus jedem Zeichen (höchstwertiges Bit zuerst).
bStringExtrahiert Bits aus jedem Zeichen (niedrigstwertiges Bit zuerst).
CFixnumExtrahiert ein Zeichen als vorzeichenlose Ganzzahl.
cFixnumExtrahiert ein Zeichen als Ganzzahl.
D, dFloatBehandelt sizeof(double) Zeichen als nativen double.
EFloatBehandle sizeof(double) Zeichen als Little-Endian-Double.
eFloatBehandle sizeof(float) Zeichen als Little-Endian-Float.
F, fFloatBehandle sizeof(float) Zeichen als nativen Float.
GFloatBehandle sizeof(double) Zeichen als Double in Netzwerk-Byte-Reihenfolge.
gFloatBehandle sizeof(float) Zeichen als Float in Netzwerk-Byte-Reihenfolge.
HStringExtrahiere Hexadezimalwert aus jedem Zeichen (höchstwertiges zuerst).
hStringExtrahiere Hexadezimalwert aus jedem Zeichen (niedrigstwertiges zuerst).
IIntegerBehandle aufeinanderfolgende Zeichen der Länge sizeof(int) (durch _ modifiziert) als nativen Integer.
iIntegerBehandle aufeinanderfolgende Zeichen der Länge sizeof(int) (durch _ modifiziert) als vorzeichenbehafteten nativen Integer.
LIntegerBehandle vier (durch _ modifizierte) aufeinanderfolgende Zeichen als vorzeichenlosen nativen Long-Integer.
lIntegerBehandle vier (durch _ modifizierte) aufeinanderfolgende Zeichen als vorzeichenbehafteten nativen Long-Integer.
MStringQuoted-printable.
mStringBase64-Kodierung.
NIntegerBehandle vier Zeichen als unsigned long in Netzwerk-Byte-Reihenfolge.
nFixnumBehandle zwei Zeichen als unsigned short in Netzwerk-Byte-Reihenfolge.
PStringBehandle sizeof(char *) Zeichen als Zeiger und gib \emph{len} Zeichen von der referenzierten Stelle zurück.
pStringBehandle sizeof(char *) Zeichen als Zeiger auf eine nullterminierte Zeichenkette.
QIntegerBehandle acht Zeichen als unsigned quad word (64-bit).
qIntegerBehandle acht Zeichen als signed quad word (64-bit).
SFixnumBehandle zwei aufeinanderfolgende Zeichen (unterschiedlich, wenn _ verwendet wird) als unsigned short in nativer Byte-Reihenfolge.
sFixnumBehandle zwei aufeinanderfolgende Zeichen (unterschiedlich, wenn _ verwendet wird) als signed short in nativer Byte-Reihenfolge.
UIntegerUTF-8-Zeichen als unsigned integer.
uStringUU-Kodierung.
VFixnumBehandle vier Zeichen als unsigned long in Little-Endian-Byte-Reihenfolge.
vFixnumBehandle zwei Zeichen als unsigned short in Little-Endian-Byte-Reihenfolge.
wIntegerBER-komprimierte Ganzzahl.
X Ein Zeichen rückwärts überspringen.
x Ein Zeichen vorwärts überspringen.
ZStringWird 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.

"abc \0\0abc \0\0".unpack('A6Z6') #=> ["abc", "abc "] "abc \0\0".unpack('a3a3') #=> ["abc", " \000\000"] "abc \0abc \0".unpack('Z*Z*') #=> ["abc ", "abc "] "aa".unpack('b8B8') #=> ["10000110", "01100001"] "aaa".unpack('h2H2c') #=> ["16", "61", 97] "\xfe\xff\xfe\xff".unpack('sS') #=> [-2, 65534] "now=20is".unpack('M*') #=> ["now is"] "whole".unpack('xax2aX2aX1aX2a') #=> ["h", "e", "l", "l", "o"]
Weitere Erweiterungen