9

のような文字列がありますNYMEX UTBPI。ここでは、NYMEX と UTBPI の中間にある空白のインデックスを取得し、そのインデックスから最後のインデックスまで部分文字列を切り取りたいと考えています。この場合、私の部分文字列はUTBPI 以下になります

set part1 [substr $line [string index  $line " "] [string index  $line end-1]]

エラーを下回っています。

wrong # args: should be "string index string charIndex"
    while executing
"string index  $line  "
    ("foreach" body line 2)
    invoked from within
"foreach line $pollerName {
set part1 [substr $line [string index  $line  ] [string index  $line end-1]]
puts $part1
puts $line
}"
    (file "Config.tcl" line 9)

他の文字列操作も行う方法を教えてください。これのための良いリンク。

4

3 に答える 3

5

プロセッサ時間が問題にならない場合は、それをリストに分割して 2 番目の要素を取得します。

set part1 [lindex [split $line] 1]

文字列が任意の数の単語を持つことができる場合、

set new [join [lrange [split $line] 1 end]]

ただし、ドナルの提案を使用して、操作に固執しstringます。

于 2013-04-11T00:22:40.647 に答える
1

Tclでそれを行う最良の方法は次のとおりだと思います:

set s "NYMEX UTBPI"
regexp -indices " " $s index;
puts [lindex $index 0]

変数 index には、一致するパターンの最初と最後のインデックスが含まれます。ここでは、単一の文字を探しているため、最初と最後が同じになるため、使用できます

puts [lindex $index 0]

また

puts [lindex $index 1]

詳細については、これが公式ドキュメントです: http://www.tcl.tk/man/tcl8.5/TclCmd/regexp.htm#M7

于 2013-04-10T18:24:55.887 に答える