字符串操作:
string option string1 string2
其中option可以是:
compare 按字母顺序比较,小于则返回-1,等于返回0,大于返回1
match 判断是否匹配
first判断string2中string1第一次出现的位置,如果没有则返回-1
last 和first作用相反,最后一次出现的位置,如果没有则返回-1
trim 删除string1的开头和结尾的string2,中间的不会删除
1string trim ____abc_def____ _abc_def_ 2string trim ____abc_def____ 3____abc_def____ 4string trim ____abc_def____ ____ 5abc_def 6string trim ____abc_def____ a 7____abc_def____ 8string trim abcdabcd a 9bcdabcd 10string trim abcdabcda a 11bcdabcd 12string compare abc bcd 13-1 14string compare 234 123 151 16string match 123 2 170 18string match 123 123 191 20string first abc 123abc234abc567 213 22string last abc 123abc234abc567 239
string option string命令,其中option可以是:
tolower 返回转换成小写字母之后的新字符串
toupper大写
trimleft删除左边的所有空白字符
length 返回长度
1string tolower abCdEfg 2abcdefg 3string toupper abcdefg 4ABCDEFG 5string length abcdef 66
string range命令:
1string range abcdefg 2 3 2cd 3string range abcdefg 1 3 4bcd 5string range abcdefg 2 3 6cd 7string range abcdefg 2 4 8cde 9string range abcdefg 2 5 10cdef 11 12通过以上实验发现string range命令的第一个数字和第二个数字分别代表字符串中的起始位置和结束位置,特别是第二个数字并不是代表要截取的子字符串的长度
append命令:字符串追加,可以无限追加
1set n 123 2123 3 4append n a b c 5123abc 6 7puts $n 8123abc
split命令 将字符串转换成列表,格式为:split string 分隔符
1puts $n 2123abc 3split $n a 4123 bc 5 6split abcdefg e 7abcd fg
Tcl中只有字符串型变量,所以用到数字进行计算时需要用到incr和expr操作命令
1array name a 21 15 16 3incr a(0) +3 43 5array name a 60 1 15 16 7array leng a 8bad option "leng": must be anymore, donesearch, exists, get, names, nextelement, set, size, startsearch, statistics, or unset 9array length a 10bad option "length": must be anymore, donesearch, exists, get, names, nextelement, set, size, startsearch, statistics, or unset 11array size a 124 13set j 123 14123 15incr j +100 16223 17puts $j 18223 19incr j 20224
expr命令有点类似C语言中的算术操作符(Tcl中逻辑真值是1,逻辑假值是0),有!(只要是0,执行!0之后就是1,只要是非零,执行!之后就是0),
1parray a 2a(0) = 0 3a(1) = 0 4a(15) = hello 5a(16) = 16 6expr !$a(1) 71 8expr !$a(15) 9invalid bareword "hello" 10in expression "!hello"; 11should be "$hello" or "{hello}" or "hello(...)" or ...
注意上面的错误提示:我猜想有可能Tcl命令中能够将一个命令的执行结果当作另一个命令的变量
1expr 5 * $a(16) 280 3expr 12 >> 1 46 5expr 12 << 1 624 7expr 3>2 ? 5:6 85 9expr 3<2 ? 5:6 106 11expr 5 %2 121 13expr 5 /2 142 15expr 5 /1.2 164.166666666666667 17expr 5 % 1.2 18can't use floating-point value as operand of "%" 19expr abc(-3) 20invalid command name "tcl::mathfunc::abc" 21expr abs(-3) 223 23expr round(1.234) 241 25expr round(1.634) 262 27expr sin(3.14 /2) 280.9999996829318346 29expr cos(0) 301.0