Skip to content
instance method

String#squeeze

(*::String::selector selectors) -> ::String
squeeze(*selectors) → new_string

Returns a copy of self with each tuple (doubling, tripling, etc.) of specified characters “squeezed” down to a single character.

The tuples to be squeezed are specified by arguments selectors, each of which is a string; see Character Selectors.

A single argument may be a single character:

Example
'Noooooo!'.squeeze('o')      # => "No!"
'foo  bar  baz'.squeeze(' ') # => "foo bar baz"
'Mississippi'.squeeze('s')   # => "Misisippi"
'Mississippi'.squeeze('p')   # => "Mississipi"
'Mississippi'.squeeze('x')   # => "Mississippi"  # Unused selector character is ignored.
'бессонница'.squeeze('с')    # => "бесонница"
'бессонница'.squeeze('н')    # => "бессоница"

A single argument may be a string of characters:

Example
'Mississippi'.squeeze('sp')       # => "Misisipi"
'Mississippi'.squeeze('ps')       # => "Misisipi"   # Order doesn't matter.
'Mississippi'.squeeze('nonsense') # => "Misisippi"  # Unused selector characters are ignored.

A single argument may be a range of characters:

Example
'Mississippi'.squeeze('a-p') # => "Mississipi"
'Mississippi'.squeeze('q-z') # => "Misisippi"
'Mississippi'.squeeze('a-z') # => "Misisipi"

Multiple arguments are allowed; see Multiple Character Selectors.

Related: see Converting to New String.

Ruby version changes

  1. 3.0
See also #squeeze! #split #slice! #start_with? also in 4.1 · 3.4 · 3.3 · 3.2 · 3.1 · 3.0