免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1671 | 回复: 5
打印 上一主题 下一主题

请教替换字符串的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-02-01 14:15 |只看该作者 |倒序浏览
有时候目录字符串是下面的两种情形,请问怎么获得简洁的路径。
/path1/path2/path3/path4/../path5/././././././././path6/../../../path7/file.txt
因为目录有可能不是真正的目录,而是symbolic link。
所以不能直接转换。而希望通过字符串退换的发送转换。
1) 象 ./ 就是不目录,可以全部退换掉。 因为重复的次数不确定,请问怎么操作最方便?
2) 另外,象 ../ 这种 有没有 方便的办法给去掉?

谢谢!

论坛徽章:
2
CU大牛徽章
日期:2013-04-17 11:46:28CU大牛徽章
日期:2013-04-17 11:46:39
2 [报告]
发表于 2013-02-01 15:26 |只看该作者
  1. sub do_back {
  2.     my ($t) = @_;
  3.     while ($t =~ s#(?<!\.)\./|([^/]+/)\.\./##) {
  4.         print "$t\n";
  5.     }
  6.     return $t;
  7. }
  8.    
  9. $t = '/path1/path2/path3/path4/../path5/././././././././path6/../../../path7/file.txt';
  10. print do_back($t);
复制代码

论坛徽章:
0
3 [报告]
发表于 2013-02-01 16:06 |只看该作者
太牛了。
非常感谢!

回复 2# cdtits


   

论坛徽章:
3
CU十二周年纪念徽章
日期:2013-10-24 15:41:34子鼠
日期:2013-12-14 14:57:19射手座
日期:2014-04-25 21:23:23
4 [报告]
发表于 2013-02-01 16:15 |只看该作者
本帖最后由 mcshell 于 2013-02-01 16:16 编辑

回复 1# lwbbs
  1.   s!/\.+(?=/)!!g
复制代码
楼上的会出现一个问题。。就是遇到.path或者是abc.path目录会被替换掉。{:3_189:}

论坛徽章:
0
5 [报告]
发表于 2013-02-01 16:36 |只看该作者
2楼的结果是正确的。你的结果有问题。
2楼的运行结果:
输入:/abc.path1/.path2/path3/path4/../path5/././././././././path6/../../../path7/file.txt
/abc.path1/.path2/path3/path5/././././././././path6/../../../path7/file.txt
/abc.path1/.path2/path3/path5/./././././././path6/../../../path7/file.txt
/abc.path1/.path2/path3/path5/././././././path6/../../../path7/file.txt
/abc.path1/.path2/path3/path5/./././././path6/../../../path7/file.txt
/abc.path1/.path2/path3/path5/././././path6/../../../path7/file.txt
/abc.path1/.path2/path3/path5/./././path6/../../../path7/file.txt
/abc.path1/.path2/path3/path5/././path6/../../../path7/file.txt
/abc.path1/.path2/path3/path5/./path6/../../../path7/file.txt
/abc.path1/.path2/path3/path5/path6/../../../path7/file.txt
/abc.path1/.path2/path3/path5/../../path7/file.txt
/abc.path1/.path2/path3/../path7/file.txt
/abc.path1/.path2/path7/file.txt
/abc.path1/.path2/path7/file.txt

4楼的运行结果:
输入: /abc.path1/.path2/path3/path4/../path5/././././././././path6/../../../path7/file.txt
/abc.path1/.path2/path3/path4/path5/path6/path7/file.txt
/abc.path1/.path2/path3/path4/path5/path6/path7/file.txt


回复 4# mcshell


   

论坛徽章:
3
CU十二周年纪念徽章
日期:2013-10-24 15:41:34子鼠
日期:2013-12-14 14:57:19射手座
日期:2014-04-25 21:23:23
6 [报告]
发表于 2013-02-01 17:22 |只看该作者
理解错了 不好意思{:3_196:}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP