lunes, 8 de diciembre de 2008

Hacer split de strings con expresiones regulares

Imaginense el caso:


str = "hola como estan chau"
str.split.each do |x|
print x,"\n"
end


Dara como resultado:

hola
como
estan
chau

Pero si tuvieramos (agregando signos de puntuacion entre las palabra):


str = "hola,como estan;chau"
str.split.each do |x|
print x,"\n"
end


La salida seria:

hola,como
estan;chau

Y en la mayoria de los casos, eso no es lo que buscamos, para obtener lo que queremos (separar todas las palabras, sin importar que las dividan), podemos recurrir a lo siguiente:


str = "hola,como estan;chau"
str.split(/,|\s|;/).each do |x|
print x,"\n"
end


O mejor aun

str = "hola,como estan;chau"
str.split(/\W/).each do |x|
print x,"\n"
end


Eso retorna las cuatro palabras separadas. El argumento /,|\s|;/ que se le paso a split , es una expresion regular que matchea el caracter coma, el punto y coma o espacio indicandole que tiene que tomar cualquiera de estos como separador, en el segundo caso, la expresion regular indica que tome como separador cualquier caracter que no sea alfanumerico. Como imaginaran, esto es bastante util para extraer facilmente palabras de textos webs, txts, etc...

Espero que les haya gustado, chau

No hay comentarios: