多個分隔符的字符串舉個例子,我有一個這樣的字符串:拆分與紅寶石
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"]
是否有更高效(或更容易)的方式來分割我的字符串在這三個分隔符?
看起來更容易閱讀,儘管有兩件事:一,'&:empty'應該改爲'&:empty?'和二,''或''可以更改爲'/或/ i'以容納大寫字母'OR'。 – Mark 2011-06-01 21:16:43
非常感謝 - '&:empty'甚至不起作用,我確實用'&:empty?'來測試它。正則表達式也是一個很方便的補充。 – mabako 2011-06-01 21:30:11