2010-01-25 25 views

Respuesta

34

Si con "espacio en blanco" quiere decir en el sentido de Expresión regular, que tiene carácter de espacio, tabulación, nueva línea, retorno de carro o (creo) formulario de avance, entonces cualquiera de las respuestas proporcionadas funcionará:

s.match(/\s/) 
s.index(/\s/) 
s =~ /\s/ 

o incluso (no se mencionó anteriormente)

s[/\s/] 

Si sólo estás interesado en la comprobación de un carácter de espacio, y luego probar su preferencia de

s.match(" ") 
s.index(" ") 
s =~// 
s[" "] 

del IRB (Rubí 1.8.6):

s = "a b" 
puts s.match(/\s/) ? "yes" : "no" #-> yes 
puts s.index(/\s/) ? "yes" : "no" #-> yes 
puts s =~ /\s/ ? "yes" : "no" #-> yes 
puts s[/\s/] ? "yes" : "no" #-> yes 

s = "abc" 
puts s.match(/\s/) ? "yes" : "no" #-> no 
puts s.index(/\s/) ? "yes" : "no" #-> no 
puts s =~ /\s/ ? "yes" : "no" #-> no 
puts s[/\s/] ? "yes" : "no" #-> no 
+1

Al actualizar esto, [String # match?] (Http://ruby-doc.org/core-2.4.1/String.html#method-i-match-3F) hizo su debut en Ruby v2 .4, por lo que ahora también se puede escribir 's.match? (/ \ S /)'. –

2

que puede utilizar el índice

"mystring".index(/\s/) 
+0

¿No es un espacio en blanco? – Eli

4

generalmente se hace de esta manera:

str =~ /\s/ 

Usted puede leer acerca de las expresiones regulares here.

0

me gusta mucho el uso de la cuenta para esto.

"hello 1".count("") #=> 0 
"hello 1".count(" ") #=> 1 
" hello 1".count(" ") #=> 2 


"hello 1".count(" ") > 0 #=> true 
Cuestiones relacionadas