标签: tcl
我有一个文件名e938.564.872.doc和t729.659.5631.xlx,我想删除他们的名字,所以看起来应该像e938564872.doc和t7296595631.xlx等 我试过了 set arg [string map {. {}} $arg]但它也删除了所有点,包括.doc。你能救我吗?
set arg [string map {. {}} $arg]
答案 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
后一种方法也明显更快。
文档:file,join,set,split,string
答案 1 :(得分:2)
使用正则表达式匹配除最后一个点以外的所有点:
'\.(?=[^.]*\.)'