我正在使用命令'string trimright'修剪我的字符串,但我发现这个命令修剪超过了所需.
我的表达式是" dssss.dcsss "如果我使用字符串修剪命令修剪最后几个字符".dcsss",它会修剪整个字符串.我怎么处理这个?
命令:
set a [string trimright "dcssss.dcsss" ".dcsss"]
puts $a
Run Code Online (Sandbox Code Playgroud)
预期产量:
dcsss
Run Code Online (Sandbox Code Playgroud)
实际输出
""
Run Code Online (Sandbox Code Playgroud)
该string trimright
命令把它(可选)最后一个参数作为组字符删除(因此.dcsss
是一样的sdc.
吧),只是喜欢string trim
和string trimleft
做; 实际上,string trim
就像使用两者string trimright
并string trimleft
相继使用一样.这使得它不适合你想要做的事情; 要删除后缀(如果存在),您可以使用以下几种技术:
# It looks like we're stripping a filename extension...
puts [file rootname "dcssss.dcsss"]
Run Code Online (Sandbox Code Playgroud)
# Can use a regular expression if we're careful...
puts [regsub {\.dcsss$} "dcssss.dcsss" {}]
Run Code Online (Sandbox Code Playgroud)
# Do everything by hand...
set str "dcssss.dcsss"
if {[string match "*.dcsss" $str]} {
set str [string range $str 0 end-6]
}
puts $str
Run Code Online (Sandbox Code Playgroud)
如果您正在做的是文件名操作,就像它看起来一样,请使用这些选项中的第一个.该file
命令有一些非常有用的命令,用于以跨平台方式处理文件名.