una quitar para los inicio espacios como celda blanco ruby string

ruby - los - formula en excel para quitar espacios al inicio



Función de rubí para eliminar todos los espacios en blanco? (21)

¿Qué es la función Ruby para eliminar todos los espacios en blanco? Algo así como el trim() de php trim() ?


El método .strip de Ruby realiza el equivalente de PHP a trim() .

Para eliminar todos los espacios en blanco:

" leading trailing ".squeeze('' '').strip => "leading trailing"

@Tass me hizo saber que mi respuesta original elimina las letras duplicadas en sucesión: ¡YUCK! Desde entonces, he cambiado al método de aplastamiento, que es más inteligente con respecto a este tipo de situaciones si utilizo el marco de Rails.

require ''active_support/all'' " leading trailing ".squish => "leading trailing" " good men ".squish => "good men"

Cite: apidock.com/rails/String/squish


El método gsub hará bien.
El método gsub se puede llamar en una cadena y dice:

a = "this is a string" a = a.gsub(" ","") puts a #Output: thisisastring

El método gsub busca cada aparición del primer argumento y lo reemplaza por el segundo argumento. En este caso, reemplazará cada espacio dentro de la cadena y lo eliminará.

Otro ejemplo:

b = "the white fox has a torn tail"

Reemplazemos cada aparición de la letra "t" con una "T" mayúscula

b = b.gsub("t","T") puts b #Output: The whiTe fox has a Torn Tail


Es un poco tarde, pero cualquiera que esté buscando en Google esta página podría estar interesado en esta versión.

Si desea limpiar un trozo de texto preformateado que un usuario pudo haber cortado y pegado en su aplicación de alguna manera, pero mantenga el espacio entre palabras, intente esto:

content = " a big nasty chunk of something that''s been pasted from a webpage or something and looks like this " content.gsub(//s+/, " ").strip #=> "a big nasty chunk of something that''s been pasted from a webpage or something and looks like this"


Estaba tratando de hacer esto porque quería usar un registro de "título" como identificación en la vista, pero los títulos tenían espacios.

una solución es:

record.value.delete('' '') # Foo Bar -> FooBar


Los .scan() de .scan() y .join() de Ruby de String también pueden ayudar a superar los espacios en blanco en string.

scan(//w+/).join eliminará todos los espacios y unirá la cadena

string = "White spaces in me".scan(//w+/).join =>"Whitespacesinme"

También está eliminando espacio de la parte izquierda y derecha de la cadena. Significa ltrim , rtrim y trim . En caso de que alguien tenga antecedentes sobre C , FoxPro o Visual Basic y salte en Ruby .

2.1.6 :002 > string = " White spaces in me ".scan(//w+/).join => "Whitespacesinme" 2.1.6 :003 > string = " White spaces in me".scan(//w+/).join => "Whitespacesinme" 2.1.6 :004 > string = "White spaces in me ".scan(//w+/).join => "Whitespacesinme" 2.1.6 :005 >


Mi preferencia personal es usar el método .tr

como en:

string = "this is a string to smash together" string.tr('' '', '''') # => "thisisastringtosmashtogether"

Gracias a @FrankScmitt por señalar que para hacer esto eliminar todo el espacio en blanco (no solo los espacios), tendría que escribirlo como tal:

string = "this is a string with tabs/t and a /nnewline" string.tr(" /n/t", '''') # => "thisisastringwithtabsandanewline"


Para un comportamiento que coincida exactamente con el trim PHP, el método más simple es usar el método String#strip , así:

string = " Many have tried; many have failed! " puts "Original [#{string}]:#{string.length}" new_string = string.strip puts "Updated [#{new_string}]:#{new_string.length}"

Ruby también tiene una versión de edición en el lugar, también llamada String.strip! (note el final ''!''). Esto no requiere crear una copia de la cadena, y puede ser significativamente más rápido para algunos usos:

string = " Many have tried; many have failed! " puts "Original [#{string}]:#{string.length}" string.strip! puts "Updated [#{string}]:#{string.length}"

Ambas versiones producen esta salida:

Original [ Many have tried; many have failed! ]:40 Updated [Many have tried; many have failed!]:34

¡Creé un punto de referencia para probar el rendimiento de algunos usos básicos de strip y strip! , así como algunas alternativas. La prueba es esta:

require ''benchmark'' string = ''asdfghjkl'' Times = 25_000 a = Times.times.map {|n| spaces = '' '' * (1+n/4); "#{spaces}#{spaces}#{string}#{spaces}" } b = Times.times.map {|n| spaces = '' '' * (1+n/4); "#{spaces}#{spaces}#{string}#{spaces}" } c = Times.times.map {|n| spaces = '' '' * (1+n/4); "#{spaces}#{spaces}#{string}#{spaces}" } d = Times.times.map {|n| spaces = '' '' * (1+n/4); "#{spaces}#{spaces}#{string}#{spaces}" } puts RUBY_DESCRIPTION puts "============================================================" puts "Running tests for trimming strings" Benchmark.bm(20) do |x| x.report("s.strip:") { a.each {|s| s = s.strip } } x.report("s.rstrip.lstrip:") { a.each {|s| s = s.rstrip.lstrip } } x.report("s.gsub:") { a.each {|s| s = s.gsub(/^/s+|/s+$/, "") } } x.report("s.sub.sub:") { a.each {|s| s = s.sub(/^/s+/, "").sub(//s+$/, "") } } x.report("s.strip!") { a.each {|s| s.strip! } } x.report("s.rstrip!.lstrip!:") { b.each {|s| s.rstrip! ; s.lstrip! } } x.report("s.gsub!:") { c.each {|s| s.gsub!(/^/s+|/s+$/, "") } } x.report("s.sub!.sub!:") { d.each {|s| s.sub!(/^/s+/, "") ; s.sub!(//s+$/, "") } } end

Estos son los resultados:

ruby 2.2.5p319 (2016-04-26 revision 54774) [x86_64-darwin14] ============================================================ Running tests for trimming strings user system total real s.strip: 2.690000 0.320000 3.010000 ( 4.048079) s.rstrip.lstrip: 2.790000 0.060000 2.850000 ( 3.110281) s.gsub: 13.060000 5.800000 18.860000 ( 19.264533) s.sub.sub: 9.880000 4.910000 14.790000 ( 14.945006) s.strip! 2.750000 0.080000 2.830000 ( 2.960402) s.rstrip!.lstrip!: 2.670000 0.320000 2.990000 ( 3.221094) s.gsub!: 13.410000 6.490000 19.900000 ( 20.392547) s.sub!.sub!: 10.260000 5.680000 15.940000 ( 16.411131)


Podrías probar esto

"Some Special Text Values".gsub(/[[:space:]]+/, "")

utilizando : espacio: elimina el espacio sin interrupciones junto con el espacio regular.


Puedes probar esto:

"ab c d efg hi ".split.map(&:strip)

para conseguir esto:

["ab, "c", "d", "efg", "hi"]

o si quieres una sola cadena, solo usa:

"ab c d efg hi ".split.join


Puedes usar el método de squish . Elimina los espacios en blanco en ambos extremos de la cadena y agrupa varios espacios en blanco en un solo espacio.

Por ejemplo.

" a b c ".squish

resultará en:

"a b c"

Compruebe esta referencia de api.rubyonrails.org .

EDITAR: funciona solo para rubí sobre rieles.


Respuesta relacionada:

" clean up my edges ".strip

devoluciones

"clean up my edges"


Si desea eliminar solo los espacios en blanco .strip y finales (como el recorte de PHP) puede usar .strip , pero si desea eliminar todos los espacios en blanco, puede usar .gsub(//s+/, "") lugar.


También no olvides:

$ s = " I have white space ".split => ["I", "have", "white", "space"]


Utilice gsub o eliminar. La diferencia es que gsub podría eliminar pestañas, mientras que eliminar no. A veces tienes pestañas en archivos que son agregados por los editores.

a = "/tI have some whitespaces./t" a.gsub!(//s/, '''') #=> "Ihavesomewhitespaces." a.gsub!(/ /, '''') #=> "/tIhavesomewhitespaces./t" a.delete!(" ") #=> "/tIhavesomewhitespaces./t" a.delete!("//s/") #=> "/tIhavesomewhitespaces./t" a.delete!(''//s/'') #=> using single quote is unexpected, and you''ll get "/tI have ome whitepace./t"


Yo usaría algo como esto:

my_string = "Foo bar/nbaz quux" my_string.split.join => "Foobarbazquux"


String#strip : elimina todos los espacios en blanco desde el principio hasta el final.

String#lstrip - desde el principio.

String#rstrip - sólo desde el final.

String#chomp (sin argumentos): elimina los separadores de línea ( /n o /r/n ) del final.

String#chop : elimina el último carácter.

String#delete - x.delete(" /t/r/n") - elimina todos los espacios en blanco listados.

String#gsub - x.gsub(/[[:space:]]/, '''') : elimina todos los espacios en blanco, incluidos los de Unicode .

Nota : Todos los métodos anteriores devuelven una nueva cadena en lugar de mutar la original. Si desea cambiar la cadena en su lugar, llame al método correspondiente con ! al final.


split.join explotará todos los espacios en cualquier lugar de la cadena.

" a b c d ".split.join > "abcd"

Es fácil de escribir y recordar, por lo que es agradable en la consola y para un pirateo rápido. Podría decirse que no es bienvenido en el código serio, ya que enmascara la intención.

(Basado en el comentario de Piotr en la respuesta de Justicle anterior).


" Raheem Shaik ".strip

Se eliminarán los espacios laterales izquierdo y derecho. Este código nos daría: "Raheem Shaik"


"1232 23 2 23 232 232".delete('' '') => "123223223232232"

Eliminar trabaja más rápido =)

user system total real gsub, s 0.180000 0.010000 0.190000 (0.193014) gsub, s+ 0.200000 0.000000 0.200000 (0.196408) gsub, space 0.220000 0.000000 0.220000 (0.222711) gsub, join 0.200000 0.000000 0.200000 (0.193478) delete 0.040000 0.000000 0.040000 (0.045157)


"asd sda sda sd".gsub('' '', '''') => "asdsdasdasd"


s = "I have white space".delete('' '')

Y para emular la función trim() PHP:

s = " I have leading and trailing white space ".strip