如何基于两个字符串分隔符(例如" of "
和" in "
)分割字符串。
例如,字符串:
"dogs in Toronto of Canada"
会转换为数组:
["dogs", "Toronto", "Canada"]
答案 0 :(得分:3)
您可以将String#split
与正则表达式一起使用:
"dogs in Toronto of Canada".split(/\sof\s|\sin\s/)
=> ["dogs", "Toronto", "Canada"]
答案 1 :(得分:0)
这是一个更通用的目的:
dogs.split(/\b\s*(?:of|in)\s*\b/)
那里有很多残骸,但它处理不规则的间距,of
出现在短语的开头或结尾,依此类推。
您也可以尝试使用更具适应性,但牺牲易读性:
splits = %w[ of in at on ]
pattern = Regexp.new('\b\s*%s\s*\b' % Regexp.union(splits))
dogs.split(pattern).reject(&:empty?)