如何拆分路径名。

时间:2011-08-25 06:37:55

标签: tcl

输入为C:\ test \ deva \ tcl \ newfiles \ aug.txt

输出应为“test”“deva”“tcl”“newfiles”

“aug.txt”文件或字符串末尾的任何其他“.txt”文件不应打印。

2 个答案:

答案 0 :(得分:5)

恢复原来的解决方案并添加一些内容......

假设这是一个文件路径而不是随机字符串,恰好需要拆分\

File split几乎可以执行您想要的操作,它会将路径拆分为列表。你还想使用lrange来选择除音量之外的所有内容,例如(未经测试的)

lrange [file split $path] 1 end-1

所以你没有c:\,它应该是文件分割返回的列表中的第一个元素

此外,如果您有可能获得目录路径而不是文件名,则可能需要先使用文件目录名,例如同样的警告重新测试

lrange [file split [file dirname $name]] 1 end

答案 1 :(得分:0)

[split][lrange]相结合可以做到你想要的,但是以不可移植的方式。

使这种方法更具可移植性的一种方法是使用调用[file separator]的结果进行拆分而不是使用“\”。但由于“/”在Tcl和Windows中都可以,所以可移植的真正方法是在字符串上重复调用[file dirname]并使用[file tail]提取返回路径名的最后一个组件。

有关详细信息,请参阅thisthisthis