TCL命令 - 字符串修剪

时间:2012-12-05 00:02:16

标签: tcl

我正在使用命令'string trimright'修剪我的字符串,但我发现这个命令修剪的次数超过了要求。

我的表达式是“ dssss.dcsss ”如果我使用字符串修剪命令修剪最后几个字符“.dcsss”,它会修剪整个字符串。我怎么处理这个?

命令:

     set a [string trimright "dcssss.dcsss" ".dcsss"]
     puts $a

预期输出:

    dcsss

实际输出

    ""

1 个答案:

答案 0 :(得分:7)

string trimright命令将其(可选)最后一个参数视为要删除的字符的(因此.dcssssdc.相同),就像string trimstring trimleft一样;的确,string trim就像连续使用string trimrightstring 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命令有一些非常有用的命令,用于以跨平台方式处理文件名。