Removendo caracteres com o método trim no Ruby
02/08/07
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.
- Permalink
- Trackback
- Feed dos comentários
- Ao som de: Sugarcult – A Hard Day's Night

Comentários #
Olá Nando,
Bem que o método strip poderia receber este parametro.
Para quem quer apenas retirar os espaços em branco, o strip, lstrip e o rstrip quebra o galho.
http://www.ruby-doc.org/core/classes/String.html#M000835
Abraços,
Eduardo
Exatamente. Não entendo como o Matz não pensou nisso! :)
Tem o chomp, mas ele só remove 1 caracter e apenas do final da string. Então,
puts '__'.chomp('_')irá retornar "_".Deixe um comentário