我正在使用命令“string trimright”来修剪我的字符串,但我发现这个命令修剪的内容超出了要求。
我的表达式是“ dssss.dcsss ” 如果我使用字符串修剪命令修剪最后几个字符“.dcsss”,它会修剪整个字符串。我该如何处理?
命令:
set a [string trimright "dcssss.dcsss" ".dcsss"]
puts $a
预期输出:
dcsss
实际输出
""
我正在使用命令“string trimright”来修剪我的字符串,但我发现这个命令修剪的内容超出了要求。
我的表达式是“ dssss.dcsss ” 如果我使用字符串修剪命令修剪最后几个字符“.dcsss”,它会修剪整个字符串。我该如何处理?
命令:
set a [string trimright "dcssss.dcsss" ".dcsss"]
puts $a
预期输出:
dcsss
实际输出
""
该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"]
# Can use a regular expression if we're careful...
puts [regsub {\.dcsss$} "dcssss.dcsss" {}]
# Do everything by hand...
set str "dcssss.dcsss"
if {[string match "*.dcsss" $str]} {
set str [string range $str 0 end-6]
}
puts $str
如果您正在做的确实是文件名操作,就像看起来一样,请使用这些选项中的第一个。该file
命令有一些非常有用的命令,用于以跨平台方式处理文件名。