多个分隔符的字符串举个例子,我有一个这样的字符串:拆分与红宝石
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