3

コマンド「string trimright」を使用して文字列をトリミングしていましたが、このコマンドが必要以上にトリミングされていることがわかりました。

私の式は " dssss.dcsss " です。文字列トリム コマンドを使用して最後の数文字 ".dcsss" をトリムすると、文字列全体がトリムされます。どうすればこれに対処できますか?

指示:

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

意図した出力:

    dcsss

実際の出力

    ""
4

1 に答える 1

8

このstring trimrightコマンドは、(オプションの) 最後の引数を削除する文字のセットとして扱います (これ.dcsssも同様sdc.です) 。実際、と の両方を続けて使用するのと同じです。これは、あなたがやろうとしていることには不適切です。サフィックスが存在する場合にサフィックスを削除するには、いくつかの手法を使用できます。string trimstring trimleftstring trimstring 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コマンドには、クロスプラットフォームでファイル名を操作するための非常に便利なコマンドがいくつか含まれています。

于 2012-12-05T00:13:10.870 に答える