Возьмем, например, у меня строка вроде этого:
options = "Cake or pie, ice cream, or pudding"
Я хочу иметь возможность разделить строку с помощью or
, ,
и , or
.
Дело в том, что я смог это сделать, но только сначала проанализировав ,
и , or
, а затем разделив каждый элемент массива на or
, затем сглаживая результирующий массив следующим образом:
options = options.split(/(?:\s?or\s)*([^,]+)(?:,\s*)*/).reject(&:empty?);
options.each_index {|index| options[index] = options[index].sub("?","").split(" or "); }
Результирующий массив как таковой: ["Cake", "pie", "ice cream", "pudding"]
Есть ли более эффективный (или более простой) способ разделить мою строку на эти три разделителя?