class String def trim!(chars) rtrim!(chars) ltrim!(chars) end def rtrim!(chars) gsub!(/(#{trim_prepare(chars)})+$/, '') end def ltrim!(chars) gsub!(/^(#{trim_prepare(chars)})+/, '') end def trim(chars) dup.rtrim(chars).ltrim(chars) end def rtrim(chars) dup.rtrim!(chars) end def ltrim(chars) dup.ltrim!(chars) end private def trim_prepare(chars) chars = chars.split("").collect { |char| Regexp.escape(char) } chars.join('|') end end