Tcl命令操作实验

Easter79
• 阅读 773

字符串操作:

string option string1 string2

其中option可以是:

compare 按字母顺序比较,小于则返回-1,等于返回0,大于返回1

match 判断是否匹配

first判断string2中string1第一次出现的位置,如果没有则返回-1

last 和first作用相反,最后一次出现的位置,如果没有则返回-1

trim 删除string1的开头和结尾的string2,中间的不会删除

string trim ____abc_def____ _abc_def_
string trim ____abc_def____
____abc_def____
string trim ____abc_def____ ____
abc_def
string trim ____abc_def____ a
____abc_def____
string trim abcdabcd a
bcdabcd
string trim abcdabcda a
bcdabcd
string compare abc bcd
-1
string compare 234 123
1
string match 123 2
0
string match 123 123
1
string first abc 123abc234abc567
3
string last abc 123abc234abc567
9

string option string命令,其中option可以是:

tolower 返回转换成小写字母之后的新字符串

toupper大写

trimleft删除左边的所有空白字符

length 返回长度

string tolower abCdEfg
abcdefg
string toupper abcdefg
ABCDEFG
string length abcdef
6

string range命令:

string range abcdefg 2 3
cd
string range abcdefg 1 3
bcd
string range abcdefg 2 3
cd
string range abcdefg 2 4
cde
string range abcdefg 2 5
cdef

通过以上实验发现string range命令的第一个数字和第二个数字分别代表字符串中的起始位置和结束位置,特别是第二个数字并不是代表要截取的子字符串的长度

 append命令:字符串追加,可以无限追加

set n 123
123

append n a b c
123abc

puts $n
123abc

split命令 将字符串转换成列表,格式为:split string 分隔符

puts $n
123abc
split $n a
123 bc

split abcdefg e
abcd fg

Tcl中只有字符串型变量,所以用到数字进行计算时需要用到incr和expr操作命令

array name a
1 15 16
incr a(0) +3
3
array name a
0 1 15 16
array leng a
bad option "leng": must be anymore, donesearch, exists, get, names, nextelement, set, size, startsearch, statistics, or unset
array length a
bad option "length": must be anymore, donesearch, exists, get, names, nextelement, set, size, startsearch, statistics, or unset
array size a
4
set j 123
123
incr j +100
223
puts $j
223
incr j
224

expr命令有点类似C语言中的算术操作符(Tcl中逻辑真值是1,逻辑假值是0),有!(只要是0,执行!0之后就是1,只要是非零,执行!之后就是0),

parray a
a(0)  = 0
a(1)  = 0
a(15) = hello
a(16) = 16
expr !$a(1)
1
expr !$a(15)
invalid bareword "hello"
in expression "!hello";
should be "$hello" or "{hello}" or "hello(...)" or ...

注意上面的错误提示:我猜想有可能Tcl命令中能够将一个命令的执行结果当作另一个命令的变量

expr 5 * $a(16)
80
expr 12 >> 1
6
expr 12 << 1
24
expr 3>2 ? 5:6
5
expr 3<2 ? 5:6
6
expr 5 %2
1
expr 5 /2
2
expr 5 /1.2
4.166666666666667
expr 5 % 1.2
can't use floating-point value as operand of "%"
expr abc(-3)
invalid command name "tcl::mathfunc::abc"
expr abs(-3)
3
expr round(1.234)
1
expr round(1.634)
2
expr sin(3.14 /2)
0.9999996829318346
expr cos(0)
1.0
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Easter79 Easter79
3年前
SpringBoot自定义序列化的使用方式
场景及需求:项目接入了SpringBoot开发,现在需求是服务端接口返回的字段如果为空,那么自动转为空字符串。例如:\    {        "id":1,        "name":null    },    {        "id":2,        "name":"x
Stella981 Stella981
3年前
HIVE 时间操作函数
日期函数UNIX时间戳转日期函数: from\_unixtime语法:   from\_unixtime(bigint unixtime\, string format\)返回值: string说明: 转化UNIX时间戳(从19700101 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式举例:hive   selec
Stella981 Stella981
3年前
Python time模块 返回格式化时间
常用命令  strftimetime.strftime("%Y%m%d%H:%M:%S",formattime)第二个参数为可选参数,不填第二个参数则返回格式化后的当前时间日期201812112:00:00time.strftime('%H:%M:%S')返回当前时间的时分秒time.strftim
Stella981 Stella981
3年前
SpringBoot自定义序列化的使用方式
场景及需求:项目接入了SpringBoot开发,现在需求是服务端接口返回的字段如果为空,那么自动转为空字符串。例如:\    {        "id":1,        "name":null    },    {        "id":2,        "name":"x
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k