如何分割路径名。

发布于 2024-12-01 02:30:06 字数 131 浏览 1 评论 0原文

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

输出应该是“test”“deva”“tcl”“newfiles”“

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

the input is C:\test\deva\tcl\newfiles\aug.txt

the output should be "test" "deva" "tcl" "newfiles"

"aug.txt" files or anyother ".txt" files at the end of the string should not be printed.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

宫墨修音 2024-12-08 02:30:06

恢复到我原来的解决方案并添加一些位...

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

文件拆分 几乎可以满足您的要求,它返回拆分为列表的路径。您还想使用 lrange 来选择除卷之外的所有内容,即类似(未经测试)的内容

lrange [file split $path] 1 end-1

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

此外,如果您有可能获得目录路径而不是文件名,例如重新测试时的相同警告

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

Reverting back to my original solution and adding some bits...

Assuming this is a filepath not a random string that happens to need to be split \

File split does almost what you want, it returns the path split up as a list . you also want to use lrange to select everything but the volume i.e something like (untested)

lrange [file split $path] 1 end-1

so you don't have c:\ which should be the first element in the list returned by file split

Additionally you may want to use file dirname first if there is any chance you will get directory path instead of a filename e.g. same caveats re testing

lrange [file split [file dirname $name]] 1 end
榆西 2024-12-08 02:30:06

[split][lrange] 结合可以做你想做的事情,但以不可移植的方式。

使其更可移植的一种方法是使用调用[文件分隔符] 的结果来进行分割,而不是纯粹的“\”。但由于“/”在 Tcl 和 Windows 中也可以使用,因此真正的可移植方法是在字符串上重复调用 [file dirname] 并使用 提取返回路径名的最后一个组成部分>[文件尾部]

有关详细信息,请阅读这个这个

[split] combined with [lrange] can do what you want but in a non-portable way.

One way to make this more portable would be to use the result of calling [file separator] for splitting instead of bare "\". But since "/" are also okay both in Tcl and Windows the real way to go portably would be to repeatedly call [file dirname] on the string and extract the last component of the returned pathname using [file tail].

For more info read this, this and this.

淡笑忘祈一世凡恋 2024-12-08 02:30:06
set fname "aug.txt"
aug.txt

set f [file normalize $fname]
C:\test\deva\tcl\newfiles\aug.txt

set dname [file dirname $f]
C:\test\deva\tcl\newfiles\

set name [file rootname $f]
aug

set ext [file extension $f]
.txt

file join  $dirname $name.$ext
C:\test\deva\tcl\newfiles\aug.txt
set fname "aug.txt"
aug.txt

set f [file normalize $fname]
C:\test\deva\tcl\newfiles\aug.txt

set dname [file dirname $f]
C:\test\deva\tcl\newfiles\

set name [file rootname $f]
aug

set ext [file extension $f]
.txt

file join  $dirname $name.$ext
C:\test\deva\tcl\newfiles\aug.txt
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文