"/home/chief/project/public/system/uploads/000/000/001/original/1/1.flv
/system/uploads/000/000/001/original/1/1.flv
"/home/chief/project/public/system/uploads/000/000/001/original/1/1.flv
/system/uploads/000/000/001/original/1/1.flv
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前面添加任何内容,并且它仍然会去除字符。
s = "/home/chief/project/public/system/uploads/000/000/001/original/1/1.flv"
s.sub("/home/chief/project/public", "")
这应该做的伎俩。
您应该指定使用哪种语言。 使用sed是微不足道的。
echo "\"/home/chief/project/public/system/uploads/000/000/001/original/1/1.flv" | sed -e 's-\"/home/chief/project/public--'
问题标签为ruby – willcodejavaforfood 2011-03-15 16:18:52
好的。我没看到标签。 – Luixv 2011-03-15 16:21:30
谢谢。如果我想剥离它的结尾,并使其像/ home/chief/project/public/system/uploads/000/000/001 /那样如何。这需要一个正则表达式吗?考虑到原始数字会有所不同。 – merlin 2011-03-15 16:22:22
如果您之后添加此行: s.sub(“/ original/1/1.flv”,“”) 它应该适合您。可能有一些稍微好一点的方法,我不知道,因为我一段时间都没有做过Ruby,但是我已经展示过的应该可以做到。 – 2011-03-15 16:32:34
@dean ...'考虑到原来的数字是不同的'是她说的..你的解决方案不会工作... – rubyprince 2011-03-15 16:57:17