Go to English Blog

Removendo caracteres com o método trim no Ruby

Leia em menos de um minuto

Já precisou remover caracteres de uma string, com funções semelhantes a trim, rtrim e ltrim do PHP? Pois é! No Ruby você não tem isso nativamente. Para adicionar tais funcionalidades, basta estender a classe String com os métodos abaixo.

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

Seu funcionamento é muito semelhante às funções do PHP. Veja:

text = '|_ ruby _|'
puts text.trim(' _|')  # both sides
puts text.ltrim(' _|') # left side
puts text.rtrim(' _|') # right side

Lembre-se que você não precisa passar os caracteres que serão removidos na ordem em que eles aparecem.