tcl三部曲(二)、变量与列表

感谢公众号《IC小迷弟》提供的视频讲解与学习资源,谢谢大哥耐心的讲解!推送内容是对视频讲解的部分整理,关于详细内容,大家可以关注IC小迷弟获取全部学习资料(讲解视频连接:tcl语言基础培训)。

tcl三部曲(二)、变量与列表

正文开启,本次分享的是变量与列表部分的笔记与操作实例

Part05变量

属性

1、 无需声明定义,直接使用set进行创建,使用unset进行移除,变量包含变量名和变量值两部分。

2、 使用$进行变量调用 

3、 区分大小写 

4、 变量名和变量值都可以由任意字符组成,建议使用字母开头,使用字母/下划线+数字进行命名。

5、 常用的变量类型:string、list、array、direction、etc.(字符串、列表、数组、字典) 

6、 变量存储类型分为字符串表达形式和内部表达式形式。(整数、实数、数组、列表、tcl脚本etc.) 

变量名 :

变量名由字母数字和下划线构成,遇到非数字、字母、下划线就会停止。

变量之string :

如果要把某个简单变量当做字符串处理/看待,可以使用string命令提供的功能!

string命令的格式为string  option  arg   ?arg..? 

(1)、string match ?-nocase? Pattern string 

含义:如果Pattern和sting相匹配,返回1,否则返回0,如果开启-nocase选项,则不区分大小写。

使用glob-style方式通配符:

tcl三部曲(二)、变量与列表

example1:

tcl三部曲(二)、变量与列表

example2:

tcl三部曲(二)、变量与列表

vivado运行结果

tcl三部曲(二)、变量与列表

DC运行结果

可以看到在不同的环境下运行结果存在差异,此处建议采用“{[0-9]}”格式,此处的表示匹配无限长的字符串。

example3:

tcl三部曲(二)、变量与列表

比较有意思的上述语句的分析,{[a-z][0-9]}使用大括号{},依然被解析成功,这是因为{}的作用时间为替换步骤,在Tcl的命令执行步骤{}失去作用。

(2)、string  equal  ?-length int?  string1  string2 string equal

是对两个字符串进行比较,如果他们严格{-exact}相同(此处的严格相同指的是的长度、字符完全相同,不可含有),返回1,否则返回0。-length可以指定匹配的长度(也就是要比较前多少位)。

当然,也可以使用-nocase忽略比较字符的大小写。

tcl三部曲(二)、变量与列表

(3)、string compare ?-nocase? ?-length int? string1 string2 

对两个字符串进行比较,如果他们严格相同,返回0;如果第一个字符串在字典中先与第二个字符串(第二个字符串更大),返回-1,否则返回1.(-length指定匹配的长度

example:

tcl三部曲(二)、变量与列表

(4)、string length string 

返回字符串的长度,空格、换行符(\n整体算做一个字符)也算一个字符example:

tcl三部曲(二)、变量与列表

(5)、string index string charIndex 

返回string中的第charIndex个字符,charIndex可以为:

—整数n   :第n个字符(从0开始,下面简记为0-based) 

—end      :最后一个字符 

—end-整数n:倒数第n个字符【倒序】

如果charIndex小于0或者大于字符串长度,返回空(Null)
example:

tcl三部曲(二)、变量与列表

(6)、string range string first last 

与string index string charIndex类似,只不过他需要两个索引,返回的是first到last之间的字符串,如果fisrst小于0按0处理,last类似。

此外当字符串中含有空格等符号时需要使用””弱引用。

example:

tcl三部曲(二)、变量与列表

(7)、string replace string first last ?newstring?

字符替换与删除,如果first比last大,则不进行替换与删除,使用newstring字符替换first到last位置的字符,如果不存在newstring则将first到last位置的字符删除。

example:

tcl三部曲(二)、变量与列表

(8)、string map ?-nocase? mapping string 

string map ?-nocase?mapping string将string中出现的所有关键字替换成响应的值,置换按顺序进行,转换列表中先出现的先置换,并且只对字符串迭代一次,所以前面的置换不会影响到接下来的匹配查找

example:

tcl三部曲(二)、变量与列表

(9)、string trim / trimleft / trimright string ?chars?

裁剪操作,将string开头和结尾出现的要剪裁的字符都删掉。

example:

tcl三部曲(二)、变量与列表

(10)、string tolower/toupper string ?first? ?last? 

从first到last的所有字符都转换成小(大)写,如果未指明first和last则全部转换。

(11)、string totitle string ?first? ?last? 

将first到last 位置的字符串转换为标题格式(仅首字母大写) string repeat string count 将string重复count次数 

(12)、string reverse string 

将string顺序倒过来

Part06列表list

定义 

list(列表)是Tcl中频繁使用的数据类型之一,列表中元素的类型可以不相同,数字、字符串、甚至是可以包含列表。

创建列表list的三种方法

tcl三部曲(二)、变量与列表

list相关的一些指令

1、llength list

llength list返回list的元素个数

tcl三部曲(二)、变量与列表                            

2、lindex  ?index…?

lindex  ?index…? 检索list中含有index的元素

tcl三部曲(二)、变量与列表

3、lrange list first last

lrange list firstlast:与lindex类似,只不过他需要两个索引,返回firstlast之间的字符串,如果first小于0,则按照0来处理,last类似。

tcl三部曲(二)、变量与列表

4、linsert list index value

linsert list indexvalue 在指定位置插入新元素,此前该位置的元素向后移动

tcl三部曲(二)、变量与列表

5、lreplace list first last value value…

lreplace list firstlast value value…?将list中从firstlast的元素换成0个或多个元素,该指令可以用来替换、删除元素

tcl三部曲(二)、变量与列表

6、lset varName ?index…? newValue

lset varName ?index…?newValue将变量varName中的index位置的元素改成newValue

tcl三部曲(二)、变量与列表

7、concat ?list list …?

concat ?listlist …?将不同的list合并成新的list

tcl三部曲(二)、变量与列表

8、lappend varname value ?Value…?

lappend varname value?Value…?value作为列表元素添加到varName变量中,如果这个变量不存在,就创建它,需要注意的是此处使用list的话不需要$

tcl三部曲(二)、变量与列表

9、lrepeat number value ?value?

value重复number次,得到新的list

tcl三部曲(二)、变量与列表

10、lassign list varName ?vaeName…?

list的元素依次赋给名为VarName的变量

如下,将list_a的元素依次赋给x y z

tcl三部曲(二)、变量与列表

11、jion list ?joinString?

joinString作为分隔符,把列表元素串接起来,joinString默认为空格

tcl三部曲(二)、变量与列表

12、split string ?splitCgars?

stringsplitChars处分开

tcl三部曲(二)、变量与列表

13、lsearch

可使用help lsearchman lsearch查看。

list中搜索与pattern匹配的一个或多个元素,option选项控制模式匹配方式(-exact/-glob/-regexp),是返回元素值(-inline)还是索引,是搜索所有的匹配(-all)还是值搜索最先出现的匹配等。

默认使用-glob匹配,返回第一处匹配的索引,没有匹配元素时返回-1

感觉排版真的是我更新路上的拦路虎,为什么别人家的排版都这么好看?

‧  END  

tcl三部曲(二)、变量与列表

长按识别图中二维码关注