Tcl学习笔记(二)——表达式、字符串

目录

1. 表达式        

算数操作符

关系操作符

逻辑操作符

按位操作符

选择操作符

数学函数

字符串操作

2. 字符串

字符串长度、大小写转换、裁剪、重复

字符串类型

字符的获取

字符串的添加、删除、替换

字符串的比较

字符串的简单搜索

字符串的匹配

格式化输出


1. 表达式        

表达式由操作数、操作符构成,以下都是一些基本的操作符。

算数操作符

语法结果操作数类型
-aa的负值整型、浮点型
+a对a作一元加操作整型、浮点型
a+ba加b整型、浮点型
a-ba减b整型、浮点型
a*ba乘以b整型、浮点型
a/ba除以b整型、浮点型
a%ba除以b取余整型
a**b指数:a的b次方整型、浮点型

当两个操作数之一为浮点型数据时,另一个操作数也会被转换为浮点型数据。

a/b和a%b的结果需要满足a=q*b+r且0≤|r|<|b|,r和q同符号(q为a除以b的商,r为余数)

关系操作符

语法结果操作数类型
a<b如果a小于b,则结果为1、否则为0整型、浮点型、字符串
a<=b如果a小于或等于b,则结果为1、否则为0整型、浮点型、字符串
a>b如果a大于b,则结果为1、否则为0整型、浮点型、字符串
a>=b如果a大于或等于b,则结果为1、否则为0整型、浮点型、字符串
a==b如果a等于b,则结果为1、否则为0整型、浮点型、字符串
a!=b如果a不等于b,则结果为1、否则为0整型、浮点型、字符串

逻辑操作符

语法结果操作数类型
a&&b逻辑与:如果a和b都不是0,则结果为1、否则为0整型、浮点型
a||b逻辑或:如果a和b不是0,则结果为1、否则为0整型、浮点型
!a逻辑非:如果a为0,则结果为1、否则为0整型、浮点型

按位操作符

语法结果操作数类型
a&ba和b按位与整型
a|ba和b按位或整型
a^ba和b按位异或整型
~aa按位取反整型
a<<b把a左移b位,低位补0整型
a>>b把a右移b位,高位补0整型

选择操作符

语法结果操作数类型
x?a:b如果x为真,则处理参数a、否则处理参数b整型、浮点型、字符串

数学函数

函数结果
abs(x)x的绝对值
fmod(x,y)x除以y的余数
max(arg,...)所有数值参数的最大值
min(arg,...)所有数值参数的最小值
pow(x,y)x的y次方
sqrt(x)x的平方根
hypot(x,y)x2+y2的平方根
exp(x)e的x次方
log(x)x的自然对数
log10(x)x的以10为底的对数
ceil(x)向上取整(不小于x的最小整数)
floor(x)向下取整(不大于x的最小整数)
round(x)对x进行四舍五入得到的整型值
rand()产生在[0,1]区间的伪随机浮点数
srand(x)使用整数种子x重设随机数生成器
bool(x)将可转换的表达式转换为布尔值,1为真、0为假
double(x)数值等于整型值x的实数
int(x)将x转换为整型值
wide(x)用至少64位位宽表示x的整型值

字符串操作

语法结果操作数类型
eq比较两个字符串是否相等,若相等,则返回1、否则返回0字符串
ne比较两个字符串是否不等,若不等,则返回1、否则返回0字符串

2. 字符串

        字符串由一系列字符构成,Tcl中的字符串并不一定要放在双引号中。

字符串长度、大小写转换、裁剪、重复

命令string length可获取字符串中字符的个数,该命令后有一个参数:字符串。

命令string totitle可将字符串转换为标题形式,即首字母大写,该命令后有一个参数:待转换字符串。

命令string toupper将字符串中的小写字母全部转换为大写字母表示,该命令后有一个参数:待转换字符串。

命令string tolower将字符串中的大写字母全部转换为小写字母表示,该命令后有一个参数:待转换字符串。

命令string trim可去除字符串开头和结尾处的裁剪字符,该命令后有两个参数:字符串、裁剪字符。

命令string trimleft只用于去除开头处的裁剪字符,该命令后有两个参数:字符串、裁剪字符。

命令string teimright只用于去除结尾处的裁剪字符,该命令后有两个参数:字符串、裁剪字符。

命令string repeat指定字符串的重复次数,该命令后有两个参数:字符串、重复次数,返回值为新生成的字符串。

字符串类型

命令string is确定字符类型,该命令后有两个参数:字符类型、字符串,如果字符串是指定的类型,则返回1、否则返回0。

字符类型测试对象
alnum全为Unicode字母或数字
alpha全为Unicode字母
ascii全为7位ASCII字符
boolean可识别为布尔型的值
digit全为Unicode数字
double双精度浮点值
false可识别为布尔型的值“非”
true可识别为布尔型的值“是”
integer32位整型值
lower全为Unicode小写字母
upper全为Unicode大写字母
punct全为Unicode标点符号
space全为Unicode空格符号
wordchar全为字母和连接符(主要指下划线)
xdigit全为十六进制数,包括0~9、a~f、A~F

字符的获取

命令string index可通过索引值获取指定位置的字符,该命令后有两个参数:字符串、索引值。

end为字符串中最后一个字符的索引值,end-1为倒数第二个字符的索引值,以此类推。

命令string range可通过两个索引值获取指定范围内的所有字符,该命令后有三个参数:字符串、索引值、索引值。

字符串的添加、删除、替换

命令append可以在字符串末尾添加新的字符串,该命令后有两个参数:变量名(对应待添加字符的字符串)、新的字符串,返回值为原字符串和新的字符串共同拼接的字符串。

命令string replace可以删除指定索引范围内的字符,该命令后有两个参数:字符串、索引值,返回值为删除索引值范围内的字符后的剩余字符。

命令string replace命令后跟随4个参数,就可以实现字符串的替换功能,其中第四个参数为新的字符串,用于替换两个索引值所确定范围内的字符串。该命令的返回值为替换后的字符串,原始字符串并没有改变。

string replace不会修改原始字符串变量的值

字符串的比较

命令string compare接收两个字符串参数,并对其进行比较。如果第一个字符串在字典中先于第二个字符串,则返回-1;如果第一个字符串在字典中后于第二个字符串,则返回1;如果两者相同,则返回0.

命令string equal接收两个字符串参数,用于判断两者是否严格相等。若相等,则返回1,否则返回0。

string compare和string equal在对字符串进行比较时区分大小写,除非添加了-nocase选项。此外还可以设置-length选项(其后跟随一个正整数i),从而限定只对前i个字符进行比较。

字符串的简单搜索

命令string first接收两个字符串参数,并在第二个字符串中从左至右(从字符串头部至字符串尾部)搜索与第一个字符串相同的子字符串。如果可以找到,则返回最开始找到的子字符串开头字符的索引值,如果无法找到则返回-1。

命令string last与string first类似,但返回的是最右边的相同子字符串的开头字符的索引值。

字符串的匹配

命令string match用于通配符样式的匹配,该命令后有两个参数:模式字符串、待匹配的字符串,如果待匹配的字符串与模式字符串匹配,则返回1、否则返回0。

字符说明
*可与零个或多个任意字符组成的字符串匹配
?可与一个任意字符匹配
[chars]可与chars中的任意一个字符匹配。chars可以是范围表达式,如a~z、0~9、A~Z等。由范围表达式确定的范围包括边界,如[a-c],那么a、b、c中的任意一个字符都可与之匹配。
\x可与单个字符x匹配,用于指定会被特殊处理的字符,如*、?、[]、\

格式化输出

命令format有如下作用:(1)改变一个值的表现形式;(2)改变一个值的输出格式,该命令后有两个参数:格式字符串、待转换的值。

转换符功能说明
d转换为有符号整数
u转换为无符号整数
o转换为无符号八进制数
x或X转换为无符号十六进制数
c转换为ASCII码
s无转换(Tcl中的一切都是字符串)
f转换为浮点数
e或E转换为科学计数形式

参考文献:

《Tcl/Tk入门经典》
《Vivado/Tcl零基础入门与案例实战》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/523316.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络 实验指导 实验9

实验9 三层交换机综合实验 1.实验拓扑图 名称相连的接口IP地址网关PC1F0/3172.1.1.2/28172.1.1.1/28PC2F0/4172.1.1.18/28172.1.1.17/28PC3F0/5172.1.1.34/28172.1.1.33/28PC4F0/3172.1.1.3/28172.1.1.1/28PC5F0/4172.1.1.19/28172.1.1.17/28PC6F0/5172.1.1.35/28172.1.1.33/2…

学习天机04(优惠劵)

1.使用Redis和Mq优化领取优惠卷的高并发操作 实现思路&#xff1a; 因为领取优惠券的操作&#xff0c;涉及到操作db的操作很多&#xff0c;比如说查询优惠卷&#xff0c;统计已经领取的数量&#xff0c;更新已经发放的数量和新增用户券。所以了防止在高并发的情况下对我们的数…

如何查询大数据信用报告?查询时需要注意的事项有哪些?

在数字化时代&#xff0c;大数据信用评分对于需要资金周转的个人或企业来说至关重要。许多机构在贷款审批过程中使用大数据信用评分作为风险控制的重要手段。因此&#xff0c;了解自己的大数据信用状况成为了常规操作。本文将详细介绍如何查询大数据信用报告以及查询时需要注意…

物联网实战--入门篇之(十一)安卓QT--前端开发

目录 一、设计思路 二、QML文件结构 三、顶部框 四、中心圆圈 五、泡泡 六、开关栏 七、调速栏 八、安卓编译 一、设计思路 还是再贴一下米家APP的截图&#xff0c;再根据我们之前第九篇的分析&#xff0c;大概可以得出设计思路了。首先一个根页面当底版&#xff0c;然…

SpringBoot属性配置的多种方式

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉🍎个人主页:Leo的博客💞当前专栏: 循序渐进学SpringBoot ✨特色专栏: MySQL学习 🥭本文内容:SpringBoot属性配置的多种方式 📚个人知识库: Leo知识库,欢迎大家访问 目录 …

突破编程_前端_SVG(概述)

1 什么是 SVG SVG&#xff0c;全称可缩放矢量图形&#xff08;Scalable Vector Graphics&#xff09;&#xff0c;是一种基于 XML&#xff08;可扩展标记语言&#xff09;的矢量图像格式。这种图像格式的主要特点是它描述的是矢量图形&#xff0c;而不是基于像素的位图图像。因…

接口和抽象类的综合案例

题目要求&#xff1a; 代码框架&#xff1a; 代码实现&#xff1a; person类&#xff1a; package www.jsu.com;public class Person {private String name;private int age;public Person() {}public Person(String name, int age) {this.name name;this.age age;}public …

【第十二篇】使用BurpSuite实现CSRF(实战案例)

CSRF存在前提:简单的身份验证只能保证请求是发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的 业务场景:新增、删除、收藏、编辑、保存使用Burp发现CSRF漏洞的过程如下。 1、如图,存在修改邮箱的功能点如下: 2、修改邮箱的流量包,此时邮箱已被修改: 思路:是…

Labview如何0基础自学快速入门?(纯干货帖)

大家好&#xff0c;首先声明&#xff1a;本文纯干货&#xff0c;单纯为了帮助大家快速入门。有用的话大家点赞评论加关注即可。谢谢大家 题主是从一个毫无编程基础的Labview小白到现在能独立承担软件开发项目的工程师&#xff0c;作为瑞文的老玩家&#xff0c;题主觉得&#xf…

Git场景运用

git 脚本在开发中应用场景-CSDN博客 Git基础 Git基本运作流程 ​​​​​​​ (1) workspace->index->Repository ​ 本地写代码在workspace&#xff0c;add暂存到index&#xff0c;commit提交到本地Repository。多项目成员&#xff0c;每员对应本地仓库&#xff0c;各自…

uniapp-设置UrlSchemes从外部浏览器H5打开app

需求&#xff1a;外部浏览器H5页面&#xff0c;跳转到uniapp开发的原生app内部。 1、uniapp内部的配置&#xff1a; &#xff08;1&#xff09;打开manifest->App常用其他设置&#xff0c;如下&#xff0c;按照提示输入您要设置的urlSchemes&#xff1a; &#xff08;2&am…

pom.xml文件中的标签认识

周末不卷&#xff0c;研究下pom.xml里的内容。 一般一个pom.xml文件外面一个project包着以下的标签&#xff1a; groupId artifactId repositories properties dependencies build plugins 下面分别来说说这几个标签的含义&#xff1a; 1、groupId&#xff1a;表示项目组的id…

MSOLSpray:一款针对微软在线账号(AzureO365)的密码喷射与安全测试工具

关于MSOLSpray MSOLSpray是一款针对微软在线账号&#xff08;Azure/O365&#xff09;的密码喷射与安全测试工具&#xff0c;在该工具的帮助下&#xff0c;广大研究人员可以直接对目标账户执行安全检测。支持检测的内容包括目标账号凭证是否有效、账号是否启用了MFA、租户账号是…

vivado 系统内逻辑设计调试流程

系统内逻辑设计调试流程 Vivado 工具提供了诸多功能 &#xff0c; 用于在真实硬件器件中调试系统内设计。系统内调试流程包含 3 个不同阶段 &#xff1a; 1. 探测阶段 &#xff1a; 确定设计中要探测的信号和探测的方法。 2. 实现阶段 &#xff1a; 完成设计实现 &…

Java学习笔记24(面向对象编程(高级))

1.面向对象编程(高级) 1.1 类变量和类方法 1.类变量 ​ *类变量也叫静态变量/静态属性&#xff0c;是该类的所有对象共享的变量&#xff0c;任何一个该类的对象去访问它时&#xff0c;取到的都是相同的值&#xff0c;同样任何一个该类的对象去修改它时&#xff0c;修改的也是…

31.2k star, 免费开源的白板绘图工具 tldraw

31.2k star, 免费开源的白板绘图工具 tldraw 分类 开源分享 项目名: tldraw -- 无限画布白板 Github 开源地址&#xff1a; https://github.com/tldraw/tldraw 在线测试地址&#xff1a; tldraw 文档地址&#xff1a; tldraw SDK tldraw 是一款开源免费的无限画布白板&…

网络规划(homework 静态路由 and Rip路由表更新)

1、写出下图路由器1和路由器3中的路由表&#xff08;按直接交付、特定主机交付、特定网络交付、 默认交付的顺序放置路由项&#xff09; 2、写出Ri更新后的路由表&#xff08;rip路由协议&#xff09; 1、将Rj广播的路由消息全部1 2、直接对照着更新Ri中的路由表

基于java实现的二手车交易网站

开发语言&#xff1a;Java 框架&#xff1a;ssm 技术&#xff1a;JSP JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea…

【可能是全网最丝滑的LangChain教程】六、快速入门Agent

系列文章地址 【可能是全网最丝滑的LangChain教程】一、LangChain介绍-CSDN博客 【可能是全网最丝滑的LangChain教程】二、LangChain安装-CSDN博客 【可能是全网最丝滑的LangChain教程】三、快速入门LLM Chain-CSDN博客 【可能是全网最丝滑的LangChain教程】四、快速入门Re…

[深度学习] 无人车环境准备

1. 安装过程基本遵循以下步骤 电脑端环境配置 - OriginBot智能机器人开源套件 需要注意以下两点&#xff1a; 1> 由于深度学习需要的包和镜像体积都比较大&#xff0c;所以虚拟机硬盘大小建议120GB 2> 虚拟机的网络适配器应该设置为桥接模式&#xff0c;如果使用NAT模…