列表删除前面两个元素_tcl三部曲(二)、变量与列表

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

dd62e354ff2aa2f935e3613709a198bf.png

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

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方式通配符:

aa31445009319e128062cf40870f6d31.png

example1:

ee3ffb4c016e8603bcc509c07cae89fd.png

example2:

60e080f9d193fd43bb3e3a85767ce231.png

vivado运行结果

d4814c18cb42921609767af6baa4d3ce.png

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

f4f838e6bca1f2b20981709a84c34f4d.png

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

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

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

819883337546c8c366e4799dc35dcbb5.png

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

2f9539c0a690a00076697a27265fc363.png

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

a0ccd4332a16204f900f5337941208d8.png

(5)、string index string charIndex 返回string中的第charIndex个字符,charIndex可以为:—整数n   :第n个字符(从0开始,下面简记为0-based) —end      :最后一个字符 —end-整数n:倒数第n个字符【倒序】如果charIndex小于0或者大于字符串长度,返回空(Null) example:

861434055cb65c8ef5cc78770f7b34b7.png

(6)、string range string first last 与string index string charIndex类似,只不过他需要两个索引,返回的是first到last之间的字符串,如果fisrst小于0按0处理,last类似。此外当字符串中含有空格等符号时需要使用””弱引用。 example:

297d226f8d0656e0c0d0033db4605f46.png

(7)、string replace string first last ?newstring?字符替换与删除,如果first比last大,则不进行替换与删除,使用newstring字符替换first到last位置的字符,如果不存在newstring则将first到last位置的字符删除。 example:

889bdb2f3fc62e5a5da26e563c0df3f9.png

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

cdccc585fe33612de79f4ee01e6e317a.png

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

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

example:

03265622d41154a7dbbce1689d263489.png

(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的三种方法

773c5b982965662a1afcf09372b943ac.png

list相关的一些指令

1、llength list

llength list返回list的元素个数

c5a6a2a6de4ace104719cc587c002bc0.png                            

2、lindex  ?index…?

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

cffbf1a4f432abe6c115688f4d1c2ece.png

3、lrange list first last

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

35ffcd6bfc7522245d298106f1bfe3bd.png

4、linsert list index value

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

2951b8f70d5a71b255cdf54b5aadcae3.png

5、lreplace list first last value value…

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

7db8f7a6416679736e4fae9bf94b467e.png

6、lset varName ?index…? newValue

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

77ee66aba704886cd1a2bf7108b2d040.png

7、concat ?list list …?

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

f7aa69f8a4b9b73c9768188b21c0b0c5.png

8、lappend varname value ?Value…?

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

3d84e407e2a78106b06e0434b7e39a00.png

9、lrepeat number value ?value?

将value重复number次,得到新的list

149dd19bb55f369c8abde9074e01c0a5.png

10、lassign list varName ?vaeName…?

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

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

f68e7a3021dba9f87dbc8269a4839a7b.png

11、jion list ?joinString?

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

8a8699a9ca7a1adbb00c482dddaf45ab.png

12、split string ?splitCgars?

把string在splitChars处分开

5b39baddfaca4df3f3e8a7d25c2e388d.png

13、lsearch

可使用help lsearch、man lsearch查看。

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

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

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值