2011-03-15 60 views

回答

2
str = "/home/chief/project/public/system/uploads/000/000/001/original/1/1.flv" 
chopped = str.sub(/.*\/public/, "") #=> "/system/uploads/000/000/001/original/1/1.flv" 

这将删除一切公众(包括/公共)的左侧。这样你的代码就不是特定于某个位置,而是它更具可移植性,因为你可以在/ public前面添加任何内容,并且它仍然会去除字符。

0
s = "/home/chief/project/public/system/uploads/000/000/001/original/1/1.flv" 
s.sub("/home/chief/project/public", "") 

这应该做的伎俩。

+0

谢谢。如果我想剥离它的结尾,并使其像/ home/chief/project/public/system/uploads/000/000/001 /那样如何。这需要一个正则表达式吗?考虑到原始数字会有所不同。 – merlin 2011-03-15 16:22:22

+0

如果您之后添加此行: s.sub(“/ original/1/1.flv”,“”) 它应该适合您。可能有一些稍微好一点的方法,我不知道,因为我一段时间都没有做过Ruby,但是我已经展示过的应该可以做到。 – 2011-03-15 16:32:34

+0

@dean ...'考虑到原来的数字是不同的'是她说的..你的解决方案不会工作... – rubyprince 2011-03-15 16:57:17

0

您应该指定使用哪种语言。 使用sed是微不足道的。

echo "\"/home/chief/project/public/system/uploads/000/000/001/original/1/1.flv" | sed -e 's-\"/home/chief/project/public--' 
+1

问题标签为ruby – willcodejavaforfood 2011-03-15 16:18:52

+0

好的。我没看到标签。 – Luixv 2011-03-15 16:21:30