Tomemos, por ejemplo, tengo una cadena como esta:dividir una cadena con múltiples delimitadores en Ruby
options = "Cake or pie, ice cream, or pudding"
Quiero ser capaz de dividir la cadena a través de or
, ,
y , or
.
La cosa es, es que he sido capaz de hacerlo, pero sólo mediante el análisis ,
y , or
primero, y luego dividir cada elemento de la matriz en or
, aplanando la matriz resultante después como tales:
options = options.split(/(?:\s?or\s)*([^,]+)(?:,\s*)*/).reject(&:empty?);
options.each_index {|index| options[index] = options[index].sub("?","").split(" or "); }
La matriz resultante es la siguiente: ["Cake", "pie", "ice cream", "pudding"]
¿Hay alguna manera más eficiente (o más fácil) de dividir mi cadena en esos tres delimitadores?
Parece mucho más fácil de leer, aunque hay dos cosas: una,' &: empty' debe cambiarse a '&: empty?', y dos,' "o" 'podrían cambiarse a'/o/i' para acomodar mayúsculas 'OR' también. – Mark
Gracias por eso - '&: empty' ni siquiera funciona y de hecho lo he probado con' &: empty? '; y la expresión regular es una adición útil también. – mabako