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

2024-04-07 20:44

本文主要是介绍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零基础入门与案例实战》

这篇关于Tcl学习笔记(二)——表达式、字符串的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/883626

相关文章

Java使用正则提取字符串中的内容的详细步骤

《Java使用正则提取字符串中的内容的详细步骤》:本文主要介绍Java中使用正则表达式提取字符串内容的方法,通过Pattern和Matcher类实现,涵盖编译正则、查找匹配、分组捕获、数字与邮箱提... 目录1. 基础流程2. 关键方法说明3. 常见场景示例场景1:提取所有数字场景2:提取邮箱地址4. 高级

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python 字符串裁切与提取全面且实用的解决方案

《Python字符串裁切与提取全面且实用的解决方案》本文梳理了Python字符串处理方法,涵盖基础切片、split/partition分割、正则匹配及结构化数据解析(如BeautifulSoup、j... 目录python 字符串裁切与提取的完整指南 基础切片方法1. 使用切片操作符[start:end]2

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)

《MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)》本文给大家介绍MyBatis的xml中字符串类型判空与非字符串类型判空处理方式,本文给大家介绍的非常详细,对大家的学习或... 目录完整 Hutool 写法版本对比优化为什么status变成Long?为什么 price 没事?怎

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

C++11右值引用与Lambda表达式的使用

《C++11右值引用与Lambda表达式的使用》C++11引入右值引用,实现移动语义提升性能,支持资源转移与完美转发;同时引入Lambda表达式,简化匿名函数定义,通过捕获列表和参数列表灵活处理变量... 目录C++11新特性右值引用和移动语义左值 / 右值常见的左值和右值移动语义移动构造函数移动复制运算符

C# $字符串插值的使用

《C#$字符串插值的使用》本文介绍了C#中的字符串插值功能,详细介绍了使用$符号的实现方式,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录$ 字符使用方式创建内插字符串包含不同的数据类型控制内插表达式的格式控制内插表达式的对齐方式内插表达式中使用转义序列内插表达式中使用

详解MySQL中JSON数据类型用法及与传统JSON字符串对比

《详解MySQL中JSON数据类型用法及与传统JSON字符串对比》MySQL从5.7版本开始引入了JSON数据类型,专门用于存储JSON格式的数据,本文将为大家简单介绍一下MySQL中JSON数据类型... 目录前言基本用法jsON数据类型 vs 传统JSON字符串1. 存储方式2. 查询方式对比3. 索引

MySQL字符串常用函数详解

《MySQL字符串常用函数详解》本文给大家介绍MySQL字符串常用函数,本文结合实例代码给大家介绍的非常详细,对大家学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql字符串常用函数一、获取二、大小写转换三、拼接四、截取五、比较、反转、替换六、去空白、填充MySQL字符串常用函数一、