0
私はTCL remove an element from a listを見ましたが、それは私のためには機能しません。たとえば、いくつかのコード:リストのtclリストから値を除いた要素を削除します
set mylist [list {a b c} {d e f} {g h i}]
これは私が起こるしたいものです。
set idx [lsearch $mylist "a"]; # or if "d", it should take out {d e f} instead. Likewise, if "g" it should take out {g h i}
set mylist [lreplace $mylist $idx $idx]
puts "$mylist"
Output:
{d e f} {g h i}
は、これは実際に何が起こるかです:
Output:
{a b c} {d e f} {g h i}
私は$ IDXを置くと、それがで出てきます私が何を検索しても "-1"。私は堅い指数で要素を取り除くのは簡単だと知っていますが、私はそれを削除するためにリストの要素を検索できるプログラムが必要です。基本的には、削除したい要素のインデックスを検索するには、どうすればよいのですか?
EDIT:Nevermind。私はあなたの検索で*を使用する必要があることを理解しました。私はここにどこにもそれを見ていないので、私は私の元の質問を残しておきます、と私が見つけた解決策:
set label "a"
set idx [lsearch $mylist $label*]
set mylist [lreplace $mylist $idx $idx]
Output:
{d e f} {g h i}
それは、世界の多くで祝日です。物事は通常より少し遅いです。 –
検索パターン '$ label *'は、指定されたラベルで始まる*要素だけを見つけることを意味します。 –