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