TCL语法中的字符串操作

本文转载自: FPGA打工人微信公众号

tcl脚本实际上就是和字符串打交道,所以和字符串相关的命令比较牛逼一点,常见的有string、format、regexp、regsub、scan等。

format命令:

format formatstring ?vlue value...?

和ANSIC中的sprintf函数相似,可以指定数据的类型,小数点的位数等等,比如:

set name yshi
set age 26
set msg [format “%s is %d years old” $name %age]

scan命令:

scan string format varName ?varName ...?

与format命令相反,类似于ANSIC中的sscanf函数,其返回值是匹配的变量个数。比如:

scan "some 26 34" "some %d %d" a b

regexp命令:

regexp ?switchs? ?--? exp string ?matchVar?\ ?subMatchVar subMatchVar...?

该命令用于判断正则表达式exp是否全部或者部分匹配字符串string,匹配返回1,否则为0。至于正则表达式后面详细说明。如果regexp命令后面有参数matchVar和subMatchVar,则匹配整个正则表达式的子字符串赋值给第一个变量,最左边的赋值给第二个变量,依次类推。比如:

regexp { ([0-9]+) *([a-z]+)} " there is 100 apples" total num word

最后得到:total的值为100 apples,num的值为 100,word的值为 apples。该命令也可以设置switchs控制匹配结果:

regsub命令:

regsub ?switchs? exp string subSpec varname

也是和正则表达式打交道,将exp和string进行匹配,并将string赋值给变量varname,如果未指定varname则返回string,同时匹配exp的字符串会被subSpec替换。比如:

regsub there "They live there lives " their x
puts $x

得到 They live their lives

下面是regsub的switchs

string命令:

string option arg ?arg...?

该命令应该是最强大的操作字符串的命令,光option多达20多个。具体可参考:https://blog.csdn.net/asty9000/article/details/90681912

最新文章

最新文章