我对这一点感到有点难过,而且我还没有1.8,所以我没有前瞻。
我有一堆看起来像的字符串:
"a/b/c/d/e/f 1/2/3"
我想转变成:
"a/b/c/d/e" "f" "1/2" "3"
所以基本上我希望它在空格开头之前用最后一个斜线分割。我觉得我可以正常地做到这一点,但分裂总是似乎做了奇怪的事情。
答案 0 :(得分:6)
1.8缺少背后的,而不是提前!所有你需要的是:
str.split(/\/(?=[^\/]+(?: |$))| /)
这种分割模式匹配a)任何斜杠,后面是非斜杠字符,直到下一个空格或字符串的结尾,以及b)任何空格。
答案 1 :(得分:1)
def foo s
return [$1,$2] if s =~ /(.+)\/(\S)/
end
str = "a/b/c/d/e/f 1/2/3"
a = str.split /\s+/
a.collect { |e| foo e }.flatten
=> ["/a/b/c/d/e", "f", "1/2", "3"]
我打破了分裂并收集。当然,你可以根据需要缩短它。