|
| 1 | +Returns a new string that is a copy of +self+ with certain characters removed; |
| 2 | +the removed characters are all instances of those specified by the given string +selectors+. |
| 3 | + |
| 4 | +For one 1-character selector, |
| 5 | +removes all instances of that character: |
| 6 | + |
| 7 | + s = 'abracadabra' |
| 8 | + s.delete('a') # => "brcdbr" |
| 9 | + s.delete('b') # => "aracadara" |
| 10 | + s.delete('x') # => "abracadabra" |
| 11 | + s.delete('') # => "abracadabra" |
| 12 | + |
| 13 | + s = 'тест' |
| 14 | + s.delete('т') # => "ес" |
| 15 | + s.delete('е') # => "тст" |
| 16 | + |
| 17 | + s = 'よろしくお願いします' |
| 18 | + s.delete('よ') # => "ろしくお願いします" |
| 19 | + s.delete('し') # => "よろくお願います" |
| 20 | + |
| 21 | +For one multi-character selector, |
| 22 | +removes all instances of the specified characters: |
| 23 | + |
| 24 | + s = 'abracadabra' |
| 25 | + s.delete('ab') # => "rcdr" |
| 26 | + s.delete('abc') # => "rdr" |
| 27 | + s.delete('abcd') # => "rr" |
| 28 | + s.delete('abcdr') # => "" |
| 29 | + s.delete('abcdrx') # => "" |
| 30 | + |
| 31 | +Order and repetition do not matter: |
| 32 | + |
| 33 | + s.delete('ba') == s.delete('ab') # => true |
| 34 | + s.delete('baab') == s.delete('ab') # => true |
| 35 | + |
| 36 | +For multiple selectors, |
| 37 | +forms a single selector that is the intersection of characters in all selectors |
| 38 | +and removes all instances of characters specified by that selector: |
| 39 | + |
| 40 | + s = 'abcdefg' |
| 41 | + s.delete('abcde', 'dcbfg') == s.delete('bcd') # => true |
| 42 | + s.delete('abc', 'def') == s.delete('') # => true |
| 43 | + |
| 44 | +In a character selector, three characters get special treatment: |
| 45 | + |
| 46 | +- A caret (<tt>'^'</tt>) functions as a _negation_ operator |
| 47 | + for the immediately following characters: |
| 48 | + |
| 49 | + s = 'abracadabra' |
| 50 | + s.delete('^bc') # => "bcb" # Deletes all except 'b' and 'c'. |
| 51 | + |
| 52 | +- A hyphen (<tt>'-'</tt>) between two other characters defines a _range_ of characters: |
| 53 | + |
| 54 | + s = 'abracadabra' |
| 55 | + s.delete('a-c') # => "rdr" # Deletes all 'a', 'b', and 'c'. |
| 56 | + |
| 57 | +- A backslash (<tt>'\'</tt>) acts as an escape for a caret, a hyphen, |
| 58 | + or another backslash: |
| 59 | + |
| 60 | + s = 'abracadabra' |
| 61 | + s.delete('\^bc') # => "araadara" # Deletes all '^', 'b', and 'c'. |
| 62 | + s.delete('a\-c') # => "brdbr" # Deletes all 'a', '-', and 'c'. |
| 63 | + 'foo\bar\baz'.delete('\\') # => "foobarbaz" # Deletes all '\'. |
| 64 | + |
| 65 | +These usages may be mixed: |
| 66 | + |
| 67 | + s = 'abracadabra' |
| 68 | + s.delete('a-cq-t') # => "d" # Multiple ranges. |
| 69 | + s.delete('ac-d') # => "brbr" # Range mixed with plain characters. |
| 70 | + s.delete('^a-c') # => "abacaaba" # Range mixed with negation. |
| 71 | + |
| 72 | +For multiple selectors, all forms may be used, including negations, ranges, and escapes. |
| 73 | + |
| 74 | + s = 'abracadabra' |
| 75 | + s.delete('^abc', '^def') == s.delete('^abcdef') # => true |
| 76 | + s.delete('a-e', 'c-g') == s.delete('cde') # => true |
| 77 | + s.delete('^abc', 'c-g') == s.delete('defg') # => true |
| 78 | + |
| 79 | +Related: see {Converting to New String}[rdoc-ref:String@Converting+to+New+String]. |
0 commit comments