TCL基本语法2

摘要:
TCL基本语法21、format和scan两个基本的函数,和C语言中的sprintf和scanf的作用基本相同。format将不同类型的数据压缩在字符串中,scan将字符串中的数据提取出来。setnameJacksetage100setworker[format"%sis%dyearsold"$name$age]puts$workerscan$worker"%sis%dyearsold"name_scanage_scanputs$name_scanand$age_scan基本上就是将变量组合然后分解的过程。Jackis100yearsoldJackand1002、regexp匹配字符指令,就是将待测的字符串与正则表达式匹配,完全符合返回1,否则为0,后置参数变量可以接收每层的配置好的结果。从第二个和第三个的区别可以看出,regexp后面的传递参数的层数是由括号决定的。
TCL基本语法2

1、format和scan

两个基本的函数,和C语言中的sprintf和scanf的作用基本相同。format将不同类型的数据压缩在字符串中,scan将字符串中的数据提取出来。

setname Jack
set age 100
set worker [format "%s is %d years old"$name $age]
puts $worker
scan $worker "%s is %d years old"name_scan age_scan
puts $name_scan and $age_scan

基本上就是将变量组合然后分解的过程。

Jack is 100years old
Jack and 100

2、regexp

匹配字符指令,就是将待测的字符串与正则表达式匹配,完全符合返回1,否则为0,后置参数变量可以接收每层的配置好的结果。

puts  [ regexp {^((0x)?[0-9a-fA-F]+|[0-9]+)$} ab ]

#匹配参数服从正则表达式,但是又有区别
#|     ---------两项取其一即可
#(0x)?    -----对前面项0x进行0次或1次匹配
#[0-9a-fA-F] ---0-9 和a-f的大小写都可出现
#+   -------对于前面的项1次或多次匹配
#^   -------从头开始匹配,头部不符合即失败
#$   -------从尾部匹配,尾部不符合即失败

regexp { ([0-9]+) *([a-z]+)} "there is 00100 apples"total num word
puts $total
$num
$word
#第一个变量是整个表达式的结果
#第二个参数是第一次层的子表达式
#第三个参数是第二层的子表达式
#所谓的子表达式,就是括号覆盖的地方
regexp {^((0x)?[0-9a-fA-F]+|[0-9]+)$} 0xab011cdfS1 S2 S3
puts $S1
$S2
$S3
1
 00100apples
00100apples
0xab011cdf
0xab011cdf0x

第一个是匹配十六进制及10进制的数,匹配成功,结果正常。

第二个是匹配数字加字符串,第一层是全匹配的,第二层前半部分是匹配数字的,第二层后半部分是匹配字符的。

第三个是匹配十六进制和十进制数的,第一层是前后匹配都正确的,第二层是匹配正确的,第三层是0x匹配的。

从第二个和第三个的区别可以看出,regexp后面的传递参数的层数是由括号决定的。{()()}的三个参数依次是大括号、左括号和右括号,{(())}则是外中内依次读取。

免责声明:文章转载自《TCL基本语法2》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇注册支付宝沙箱并测试支付宝扫码连接【NS-3学习】ns3-模拟基础:关键概念,日志,命令行参数下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Sql Server:创建用户并指定该用户只能看指定的视图,除此之外的都不让查看

--当前数据库创建角色execsp_Addrole“seeview”--创建了一个数据库角色,--添加了只允许访问指定视图的用户:execsp_Addlogin“login”、“password”、“default database name”execsp_ Addlogin“per”、“oa”不能在此处执行,execsp_Adduser“login nam...

electron用默认浏览器打开链接的3种实现方式

在使用Electron开发桌面程序的过程中,我们可能经常需要使Electron程序中包含的链接在单击后直接调用系统的默认浏览器打开。仔细阅读文档后,我们都知道它的核心原理是调用系统的默认浏览器,通过Electron shell模块中的openExternal方法打开链接。然而,它的实现有不同的方法,彻底接管和选择性接管。介绍第3章中的有效方法。以上三种方法都...

R的卸载和更新安装

R包经常遇到不同版本的不兼容性。例如,与软件包相比,当前版本无论是新的还是旧的都很麻烦。最麻烦的是如何升级R软件?包括以下方法:方法1:(1)直接安装新版本(2)将旧版本库中的文件夹复制到新版本库文件夹并粘贴。如果中间有重复的名称,则不会被覆盖(需要更新基本包)。(3) 打开新版本的R并输入:update。程序包()以静默等待更新...

【转载】 Visual Studio Code几款FTP插件使用总结

有时由于悲剧性的错误操作,传输需要中断,似乎编辑器只能被迫关闭……然后我仍然使用升华文本的SFTP来维护需要涉及FTP文件同步的项目。...

Qemu模拟器运行AIX 7.2 系统

AIX系统是IBM开发的一套UNIX操作系统。它可以在所有IBM p系列和IBM RS/6000工作站、服务器和大型并行超级计算机上运行。CPU通过动态二进制转换进行仿真,并提供了一系列硬件模型。AIX系统仅支持IBM的powercpu,通用虚拟机软件仅采用X86架构,无法安装。由于QEMU的全仿真特性,可以对powercpu进行仿真以实现系统安装。...

记号一次更换IBM X3650M4主板后RAID无法启动的解决

您需要设置主板的引导选项。2.选择bootmanager并进入以下屏幕。3.选择addbootation以输入4.选择uefifullpath 5.选择第一个。然后你可以看到有一个红帽选项。选择它进入下一个屏幕并选择grub。输入6作为Efi,然后选择输入描述。输入要命名的新启动项目的名称。7.确认提交更改。...