去掉 。来自文件名但不是扩展名之前

时间:2016-07-04 11:46:07

标签: tcl

我有一个文件名e938.564.872.doc和t729.659.5631.xlx,我想删除他们的名字,所以看起来应该像e938564872.doc和t7296595631.xlx等 我试过了 set arg [string map {. {}} $arg]但它也删除了所有点,包括.doc。你能救我吗?

2 个答案:

答案 0 :(得分:4)

或许这样吗?

set arg e938.564.872.doc
set rn [file rootname $arg]
set ex [file extension $arg]
set res [join [split $rn .] {}]$ex
# => e938564872.doc

(或:)

set res [string map {. {}} $rn]$ex

后一种方法也明显更快。

文档:filejoinsetsplitstring

答案 1 :(得分:2)

使用正则表达式匹配除最后一个点以外的所有点:

'\.(?=[^.]*\.)'