2016-07-04 95 views
0

之前,我有一個文件名e938.564.872.doc和t729.659.5631.xlx,我想刪除自己的名字,所以應該像e938564872.doc和t7296595631.xlx等 我試過 set arg [string map {. {}} $arg]但它也刪除了包括.doc在內的所有點。你可以幫我嗎。刪除。從文件名,但沒有擴展

回答

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

+0

我會使用'字符串映射{。 「」}'去除點,但否則這是正確的。 –

+0

是的。我認爲,由於OP使用了這種方法,我不妨展示另一種方法。但值得將它添加到答案中。 –

2

要匹配所有,但最後一個點用正則表達式:

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