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
- Comentários (2)
- Ao som de: Sugarcult – A Hard Day's Night
Formatando a duração de uma música em milisegundos
27/07/07
Imagine que, por algum motivo, você precise formatar a duração de uma música de milisegundos para "0:00". Com o Ruby é moleza:
module Duration
def to_duration
total_secs = self / 1000.0
mins = (total_secs / 60.0).to_i
secs = (total_secs - mins*60).to_i
"%d:%02d" % [mins, secs]
end
end
class Fixnum; include Duration; end
class Bignum; include Duration; end
class Float; include Duration; end
puts (68*1000).to_duration # 1:08
puts (120*1000).to_duration # 2:00
puts (235*1000).to_duration # 3:55
Só não me pergunte para que precisei disso! :)
- Permalink
- Trackback
- Comentários (5)
- Ao som de: Death Cab for Cutie – Brothers on a Hotel Bed
Workshop de Ruby na ObjectTraining
03/07/07
No dia 17 de julho irá acontecer o workshop Impressão de cupom fiscal com Ruby, na ObjectTraining, com Alexandre Riveira. A ObjectTraining oferece treinamentos de Ruby — com o TaQ — e Ruby on Rails — com o Ronie Uliana.
Apesar de não ter nenhuma utilidade prática para mim no momento, me inscrevi para ver como é! Se você for aparecer por lá, me chama para bater um papo! ;)
- Permalink
- Trackback
- Comentários (3)
- Ao som de: Pennywise – Unkown Road
