Für die Stringbehandlung gibt es eine Zahl von Basisfunktionen, dazu kommen
Format- und Scanfunctionen sowie die Behandlung regulärer Ausdrücke mit
regsub
(Ersetzen von Mustern) und regexp
(Untersuchung auf Vorkommen von Mustern und deren Herauslösen).
Parsen von CGI-Eingaben (Sonderzeichen kommen codiert als %## (hex), Leerzeichen als +, aus Welch):
proc Url_Decode {url} { # Ersetzen + durch Space (1) regsub -all {\+} $url { } url # Ersetzen der codierten Hexzeichen durch einen Ausgabefehl für das # Zeichen (2) regsub -all {%([0-9a-hA-H][0-9a-hA-H])} $url \ {[format %c 0x\1]} url # Auflösen des Ausgabebefehls (3) return [subst $url] } Url_Decode "a+b%e4c" (1) => "a b%e4c" (2) => "a b[format %c 0xe4]c" (3) => "a bäc"
set list {Anna Berta Claudia} #oder, falls Substitutionen erforderlich sind, set list [list Anna Berta Claudia]Trotzdem werden Listen intern in eigenen Strukturen dargestellt, die schnelle Operationen über die Liste ermöglichen.
llength $list => 3 lindex $list 1 => Berta lsearch $list B* => 1 lappend list Diana => Anna Berta Claudia Diana, list enthält die neue ListeMit dem foreach-Kommando lassen sich Operationen einfach über alle Listenelemente ausführen.
Listen dürfen als Elemente wieder Listen enthalten, hier kann die Konstruktion und Auswertung allerdings etwas schwieriger werden.
TclX kennt zusätzlich keyed Lists, die stets Paare von Schlüssel und Wert enthalten, und dazu entsprechende Zugriffsfunktionen.
set tage(januar) 31Der Zugriff auf Feldelemente erfolgt analog wie auf Variablen:
puts $tage(januar)Werden mehrdimensionale Felder benötigt, trennt man einfach die Indices durch ein Zeichen, das sonst nicht vorkommt:
set a(0,0) 1 set a(0,1) 2Man muß lediglich beachten, daß die Schreibweise der Zeichenkette immer gleich ist.
Das Kommando array
liefert mit verschiedenen Parametern
über die Struktur des Feldes:
foreach x [array names tage] { puts "$x: $tage($x)" }