1

基本的なタスクのように思えますが、何かで終わる文字列を取得し、最後の 3 文字を別のものに置き換えたいと考えています。これが私の試みです:

set v "this is bob"
set index2 [string length $v]
set index1 [expr $index2 - 3]
set result [string replace $v index1 index2 dog]
puts $result; # I want it to now say "this is dog"

編集:言及するのを忘れました、それが私に与えるエラーメッセージは次のとおりです:

不適切なインデックス "index1": 整数でなければなりませんか?[+-]整数? または end?[+-]integer?
    実行中
"string replace $v index1 index2 .hdr"
    内部から呼び出された
「結果を設定 [文字列は $v index1 index2 .hdr を置換]」
    (ファイル「string_manipulation.tcl」の 7 行目)
4

2 に答える 2

3

ここにそれを行う1つの方法があります。Tcl は、、、、...などのトークンを認識endします。end-1end-2end-2end

set v "this is bob"
set result [string replace $v end-2 end "dog"]
# Result now is "this is dog"

アップデート

ファイル拡張子を置き換えるだけの場合は、 を使用file rootnameして拡張子を削除してから、独自の拡張子を追加します。

set v filename.arm
set result [file rootname $v].hdr; # Replaces .arm with .hdr

このソリューションには、3 つだけでなく、さまざまな長さのエクステンションを使用できるという利点があります。

于 2013-08-01T16:53:12.947 に答える