Listen
Eine Liste ist ein String mit durch Leerzeichen getrennten Elementen:
set l {5 3 9 1 7}
puts [llength $l]
puts [lindex $l 2]
puts [lrange $l 1 3]
puts [lsort -integer $l]
puts [lsort -integer -decreasing $l]
puts [lreverse $l]
puts [lsearch $l 9]
puts [concat $l {8 9}]
lappend l 11
puts $l
set l [linsert $l 1 100]
puts $l
set l [lreplace $l 0 0 ersatz]
puts $l
puts [join {a b c} ", "]
puts [split "a,b,c" ","]
puts [lmap x {1 2 3} { expr {$x * $x} }]
puts [lsearch -all {a b a c a} a]
puts [lindex {{a b} {c d}} 1 0]
puts [lsort -unique {c a b a c}]
puts [lrepeat 3 x]
lassign {1 2 3} a b c
puts "$a $b $c"Ausgabe
5 9 3 9 1 1 3 5 7 9 9 7 5 3 1 7 1 9 3 5 2 5 3 9 1 7 8 9 5 3 9 1 7 11 5 100 3 9 1 7 11 ersatz 100 3 9 1 7 11 a, b, c a b c 1 4 9 0 2 4 c a b c x x x 1 2 3
Dictionaries
Dictionaries (dict) sind Schlüssel-Wert-Paare:
set person [dict create name "Mia" alter 17 stadt "Berlin"]
puts [dict get $person name]
dict set person alter 18
dict set person hobby "Lesen"
puts [dict size $person]
puts [dict exists $person stadt]
puts [dict keys $person]
puts [dict values $person]
dict for {k v} $person { puts "$k = $v" }
dict unset person hobby
puts $person
puts [dict get [dict merge $person {land DE}] land]
puts [expr {[dict exists $person hobby] ? [dict get $person hobby] : "keins"}]
set zaehler [dict create]
foreach wort {a b a c b a} { dict incr zaehler $wort }
puts [lsort [dict keys $zaehler]]
puts [dict get $zaehler a]
set verschachtelt [dict create a [dict create x 1 y 2]]
puts [dict get $verschachtelt a y]Ausgabe
Mia 4 1 name alter stadt hobby Mia 18 Berlin Lesen name = Mia alter = 18 stadt = Berlin hobby = Lesen name Mia alter 18 stadt Berlin DE keins a b c 3 2
Strings
set s "Hallo Tcl Welt"
puts [string length $s]
puts [string toupper $s]
puts [string tolower $s]
puts [string range $s 6 8]
puts [string index $s 0]
puts [string first "Tcl" $s]
puts [string map {Hallo Servus Welt Erde} $s]
puts [string trim " x "]
puts [string repeat "ab" 3]
puts [string reverse "abc"]
puts [string match "H*l" "Hallo Tcl"]
puts [string is integer "42"]
puts [string is integer "4x"]
puts [string compare "a" "b"]
puts [string totitle "wort"]
puts [string replace $s 0 4 "Moin"]
puts [format "%05d|%-6s|%6.2f|%x|%e" 42 "li" 3.14159 255 1234.5]
puts [scan "12 abc 3.5" "%d %s %f" a b c]
puts "$a $b $c"
puts [string cat "a" "b" "c"]
append s "!"
puts $s
puts [llength [split $s " "]]Ausgabe
14 HALLO TCL WELT hallo tcl welt Tcl H 6 Servus Tcl Erde x ababab cba 1 1 0 -1 Wort Moin Tcl Welt 00042|li | 3.14|ff|1.234500e+03 3 12 abc 3.5 abc Hallo Tcl Welt! 3
Reguläre Ausdrücke
set text "Preise: 12 EUR, 7 EUR und 120 EUR"
puts [regexp {\d+} $text treffer]
puts $treffer
puts [regexp -all -inline {\d+} $text]
puts [regsub -all {EUR} $text "Euro"]
regexp {(\w+)@(\w+)\.(\w+)} "mia@example.com" gesamt user domain tld
puts "$user bei $domain.$tld"
puts [regexp -nocase {^hallo} "HALLO welt"]
puts [regsub {(\d+)-(\d+)} "10-20" {\2-\1}]
puts [regexp {^[a-z]+$} "abc"]
puts [regexp -indices {b+} "aabbbcc" idx]
puts $idxAusgabe
1 12 12 7 120 Preise: 12 Euro, 7 Euro und 120 Euro mia bei example.com 1 20-10 1 1 2 4
Arrays
Tcl-Arrays sind assoziativ (nicht zu verwechseln mit Listen):
set alter(Mia) 17
set alter(Tom) 25
set alter(Zoe) 31
puts $alter(Tom)
puts [array size alter]
puts [lsort [array names alter]]
puts [info exists alter(Ben)]
foreach name [lsort [array names alter]] { puts "$name: $alter($name)" }
unset alter(Tom)
puts [array size alter]
array set farben {rot #f00 gruen #0f0}
puts [lsort [array get farben]]Ausgabe
25
3
Mia Tom Zoe
0
Mia: 17
Tom: 25
Zoe: 31
2
{#0f0} #f00 gruen rotMerke
- Listen sind Strings aus Elementen:
llength,lindex,lappend,lsort,lmap dictspeichert Schlüssel-Wert-Paare:dict create/get/set/forstring,format,scan,regexp,regsubbearbeiten Text- Arrays (
name(key)) sind eine zweite assoziative Struktur
Aufgabe
Zähle mit dict incr die Buchstaben des Wortes "mississippi".