Tira ruby ​​de caracteres definidos

En Python, podemos usar el método .strip() de una cadena para eliminar las ocurrencias .strip() o finales de los caracteres elegidos:

 >>> print " (Removes (only) leading & trailing brackets & ws ) ".strip(" ()") 'Removes (only) leading & trailing brackets & ws' 

¿Cómo hacemos esto en Ruby? El método de la strip de Ruby no toma argumentos y elimina solo espacios en blanco.

No hay tal método en ruby, pero puedes definirlo fácilmente como:

 def my_strip(string, chars) chars = Regexp.escape(chars) string.gsub(/\A[#{chars}]+|[#{chars}]+\z/, "") end my_strip " [la[]la] ", " []" #=> "la[]la" 
 "[[ ] foo [] boo ][ ]".gsub(/\A[ \[\]]+|[ \[\]]+\Z/,'') => "foo [] boo" 

También se puede acortar a

 "[[ ] foo [] boo ][ ]".gsub(/\A[][ ]+|[][ ]+\Z/,'') => "foo [] boo" 

No hay tal método en ruby, pero puedes definirlo fácilmente como:

 class String alias strip_ws strip def strip chr=nil return self.strip_ws if chr.nil? self.gsub /^[#{Regexp.escape(chr)}]*|[#{Regexp.escape(chr)}]*$/, '' end end 

Que satisfaga los requisitos solicitados:

 > "[ [] foo [] boo [][]] ".strip(" []") => "foo [] boo" 

Mientras sigues haciendo lo que esperas en circunstancias menos extremas.

 > ' _bar_ '.strip.strip('_') => "bar" 

nJoy!

Pruebe el método de String#delete : (disponible en 1.9.3, no estoy seguro acerca de otras versiones)

Ex:

  1.9.3-p484 :003 > "hehhhy".delete("h") => "ey" 

Prueba el método gsub :

 irb(main):001:0> "[foo ]".gsub(/\As+[/,'') => "foo ]" irb(main):001:0> "foo ]".gsub(/s+]\Z/,'') => "foo" 

etc.

    Intereting Posts