专栏首页根究FPGAtcl三部曲(二)、变量与列表

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

example1:

example2:

vivado运行结果

DC运行结果

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

example3:

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

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

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

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

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

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

example:

(4)、string length string

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

(5)、string index string charIndex

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

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

—end :最后一个字符

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

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

(6)、string range string first last

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

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

example:

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

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

example:

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

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

example:

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

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

example:

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

与list相关的一些指令

1、llength list

llength list返回list的元素个数

2、lindex ?index…?

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

3、lrange list first last

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

4、linsert list index value

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

5、lreplace list first last ?value value…?

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

6、lset varName ?index…? newValue

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

7、concat ?list list …?

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

8、lappend varname value ?Value…?

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

9、lrepeat number value ?value?

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

10、lassign list varName ?vaeName…?

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

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

11、jion list ?joinString?

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

12、split string ?splitCgars?

把string在splitChars处分开

13、lsearch

可使用help lsearch、man lsearch查看。

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

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

本文分享自微信公众号 - 根究FPGA(gh_08b5d93f8fa5),作者:叫什么好呢啊

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-08-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • TCL的“互联网+”方法论,是否可复制?

    记得两年前,电视厂商最喜欢将网络电视、智能电视或者互联网电视这些当做噱头,搞得用户云里雾里。已经被训练得非常清醒的用户开始回归理性:只为自己需要的东西买单。或许...

    罗超频道
  • 业绩爆发,押注“泛半导体”,TCL押对了吗?

    8月初, TCL科技发布了半年度报告,上半年实现营业收入743.0亿元,净利润92.5亿元,同比增长7.65倍。

    用户2908108
  • TCL 315大促:让消费者日回归消费者

    距离315越来越近,这对于各大品牌厂商而言,是一年中最煎熬的时刻。不过,315晚会让各大企业将注意力放在了消费者维权这件事情上,忽略了315节日的初衷。315全...

    罗超频道
  • 电视行业竞争残酷,大屏会是救命稻草吗?

    2019年的电视行业,竞争可谓是空前惨烈,奥维云网(AVC)发布的市场统计数据显示,2019年三季度中国彩电市场零售量1034万台,同比-3.6%;零售额277...

    罗超频道
  • TCL成拥抱互联网最积极的“大叔级企业”,或将迎来第二春

    成立于1981年的TCL,今年35岁了,可谓“大叔级企业”,其进入电视行业有30年历史、进入手机行业有17年历史,这一从惠州成长起来的本土企业是中国硬件产业的标...

    罗超频道
  • 创维,彩电业的“技术咖”,能否赢得下一个十年?

    2018中国彩电行业风起云涌,LG、索尼、夏普等外资品牌高调宣布“重返”中国,华为、一加等手机“巨头”虎视眈眈,乘胜“狙击”彩电界。遭遇销量困局的中国家电正迎来...

    曾响铃
  • 线下体验购物是电商禁区吗?

    有个朋友曾告诉我,如果以后要投资物业,千万别投资商铺,在电子商务的冲击下以后没人会到实体店购物,实体店将沦为试衣间。看了TCL最近搞的一个巡展活动,我觉得那位朋...

    罗超频道
  • R语言系列第六期:③R语言高级绘图(上)

    这一节将介绍更多的R图形资源。首先是定制R图形的一些常用方法,主要涉及数据和模型的图形绘制。然后是如何自定义其他类型的图形或点线等元素。

    百味科研芝士
  • 忘了智能,电视市场决战“显示技术”

    文:罗超。封面图:电视行业大会传统电视厂商是主角。 最近乐视与小米之间又爆发了口水战,小米电视负责人王川炮轰乐视电视垂直一体化模式,乐视随后写诗回应让小米看看自...

    罗超频道
  • 彩电业入“大周期” 三星等品牌为何力推高端大屏

    彩电业的格局瞬息万变,这一方面是日系电视玩家全线溃败,另一方面是微鲸、乐视等互联网电视品牌快速崛起但仍在继续摸索。而以三星和LG为代表的两股韩系势力则成为这个产...

    曾响铃
  • 百年电视行业,正在迎来四大关键转折 | CES 2020

    到2020年这一届,CES(国际消费类电子产品展览会)已有52年历史。随着中国科技产业的崛起,中国企业在这一舞台上的存在感正在越来越强烈。在CES最核心的场馆C...

    罗超频道
  • 量子点技术最新进展:色彩鲜艳且可防蓝光

    目前我们接收信息的硬件,无外乎手机电视Pad等,这些无一不需要显示屏的助力。目前市面上被使用最多的屏幕有两种,分别是OLED 屏幕与LCD屏幕。不过,在色彩显示...

    镁客网
  • 苹果再加码,Mini LED成显示行业深水炸弹

    4月21日凌晨,苹果在春季发布会上发布全新配色iPhone 12,搭载M1芯片的全新iMac、智能防丢设备AirTags等新品。压轴亮相的是果粉期待多时、媒体反...

    罗超频道
  • ​ CES中国厂商唱主角,要想成为焦点可学TCL

    文:罗超 CES(国际消费类电子产品展览会)已有47年的历史,不过中国厂商在2015年之前一直是配角,2015年却大不一样,来自深圳的公司便已占到约1/4。大家...

    罗超频道
  • TCL量子点电视是噱头吗?比OLED好在哪里?

    在智能电视面世之前,电视机的比拼始终围绕着“屏幕”,从黑白到彩色电视,从13寸到110寸,从CRT到PDP等离子到LED再到OLED,科技不断让人们看电视更加舒...

    罗超频道
  • TCL TV+量子点电视H9700会成爆款吗?

    2014年智能电视产业因为政策影响,被拖慢了脚步。不过这并未妨碍两大智能电视的火爆:一个是TCL TV+,一个是乐视系列电视,只有这两家的出货量进入了100万台...

    罗超频道
  • CES2020最全报道|黑科技全面爆发,XR、手机、电视多领域新品全面报道

    北京时间1月8日-11日,2020届国际消费类电子产品展览会(CES2020)正式在洛杉矶拉斯维加斯会展中心拉开帷幕。作为全球最大的消费电子展,本届展会展览了大...

    VRPinea
  • 【重磅干货】手把手教你动态编辑Xilinx FPGA内LUT内容

    FPGA是实现高性能计算与网络的重要工具,得益于其高度的并行性与用户可编程的特性,FPGA得到了越来越广泛的应用。FPGA由CLB(Configurable L...

    网络交换FPGA
  • TCL启动“旭日计划”,显示面板离真正国产化还远吗?

    今年9月,TCL启动了超200亿的“旭日计划”。作为计划的重要部分,未来5年将针对半导体显示产业链核心环节投资超过100亿。

    用户2908108

扫码关注云+社区

领取腾讯云代金券