Zeichenselektoren
Zeichenselektor
Ein Zeichenselektor ist ein String-Argument, das von bestimmten Ruby-Methoden akzeptiert wird. Jede dieser Instanzmethoden akzeptiert einen oder mehrere Zeichenselektoren
-
String#tr(selector, replacements): gibt einen neuen String zurück. -
String#tr!(selector, replacements): gibtselfodernilzurück. -
String#tr_s(selector, replacements): gibt einen neuen String zurück. -
String#tr_s!(selector, replacements): gibtselfodernilzurück. -
String#count(*selectors): gibt die Anzahl der angegebenen Zeichen zurück. -
String#delete(*selectors): gibt einen neuen String zurück. -
String#delete!(*selectors): gibtselfodernilzurück. -
String#squeeze(*selectors): gibt einen neuen String zurück. -
String#squeeze!(*selectors): gibtselfodernilzurück. -
String#strip(*selectors): gibt einen neuen String zurück. -
String#strip!(*selectors): gibtselfodernilzurück.
Ein Zeichenselektor identifiziert null oder mehr Zeichen in self, die Operanden für die Methode sein sollen.
In diesem Abschnitt illustrieren wir die Verwendung der Methode String#delete(selector), die die ausgewählten Zeichen löscht.
Im einfachsten Fall sind die ausgewählten Zeichen genau diejenigen, die im Selektor selbst enthalten sind
'abracadabra'.delete('a') # => "brcdbr" 'abracadabra'.delete('ab') # => "rcdr" 'abracadabra'.delete('abc') # => "rdr" '0123456789'.delete('258') # => "0134679" '!@#$%&*()_+'.delete('+&#') # => "!@$%*()_" 'тест'.delete('т') # => "ес" 'こんにちは'.delete('に') # => "こんちは"
Beachten Sie, dass Reihenfolge und Wiederholungen keine Rolle spielen
'abracadabra'.delete('dcab') # => "rr" 'abracadabra'.delete('aaaa') # => "brcdbr"
In einem Zeichenselektor werden diese drei Zeichen besonders behandelt
-
Ein führendes Caret (
'^') fungiert als "nicht"-Operator für die Zeichen rechts davon'abracadabra'.delete('^bc') # => "bcb" '0123456789'.delete('^852') # => "258"
-
Ein Bindestrich (
'-') zwischen zwei anderen Zeichen definiert einen Bereich von Zeichen anstelle einer einfachen Zeichenkette'abracadabra'.delete('a-d') # => "rr" '0123456789'.delete('4-7') # => "012389" '!@#$%&*()_+'.delete(' -/') # => "@^_" # May contain more than one range. 'abracadabra'.delete('a-cq-t') # => "d" # Ranges may be mixed with plain characters. '0123456789'.delete('67-950-23') # => "4" # Ranges may be mixed with negations. 'abracadabra'.delete('^a-c') # => "abacaaba"
-
Ein Backslash (
'\') dient als Escape-Zeichen für ein Caret, einen Bindestrich oder einen anderen Backslash'abracadabra^'.delete('\^bc') # => "araadara" 'abracadabra-'.delete('a\-d') # => "brcbr" "hello\r\nworld".delete("\r") # => "hello\nworld" "hello\r\nworld".delete("\\r") # => "hello\r\nwold" "hello\r\nworld".delete("\\\r") # => "hello\nworld"
Mehrere Zeichenselektoren
Diese Instanzmethoden akzeptieren mehrere Zeichenselektoren
-
String#count(*selectors): gibt die Anzahl der angegebenen Zeichen zurück. -
String#delete(*selectors): gibt einen neuen String zurück. -
String#delete!(*selectors): gibtselfodernilzurück. -
String#squeeze(*selectors): gibt einen neuen String zurück. -
String#squeeze!(*selectors): gibtselfodernilzurück. -
String#strip(*selectors): gibt einen neuen String zurück. -
String#strip!(*selectors): gibtselfodernilzurück.
Effektiv werden die gegebenen Selektoren zu einem einzigen Selektor zusammengefügt, der nur aus den Zeichen besteht, die in allen gegebenen Selektoren gemeinsam vorkommen.
Alle Formen von Selektoren können verwendet werden, einschließlich Negationen, Bereiche und Escapes.
Jedes dieser Methodenaufrufpaare ist äquivalent
s.delete('abcde', 'dcbfg') s.delete('bcd') s.delete('^abc', '^def') s.delete('^abcdef') s.delete('a-e', 'c-g') s.delete('cde')