TCL命令-字符串修剪

TCL命令-字符串修剪,tcl,Tcl,我使用“string trimright”命令修剪字符串,但我发现该命令修剪的字符串超出了要求 我的表达式是“dssss.dcsss”如果我使用string trim命令修剪最后几个字符“.dcsss”,它会修剪整个字符串。我该怎么处理 命令: set a [string trimright "dcssss.dcsss" ".dcsss"] puts $a 预期产出: dcsss 实际产量 "" string trimright命令将其(可选)最后一个参

我使用“string trimright”命令修剪字符串,但我发现该命令修剪的字符串超出了要求

我的表达式是“dssss.dcsss”如果我使用string trim命令修剪最后几个字符“.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"]
如果你真正做的是文件名操作,就像它看起来一样,那么一定要使用这些选项中的第一个。
file
命令中有一些非常有用的命令,用于以跨平台的方式处理文件名

# 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