string 命令合集
(1) 常用的 string 命令如下表所示,其中粗体部分表示 tcl 系统命令或参数。
(2) “str1 str2 ...”、“index1 index2 ...”等,表明参数可以指定多个。
(3) 注意各个命令使用字符串变量时,格式是 **str 还是 str。一般使用 **str 时会返回新的字符串,使用 str 时不会返回新的字符串。
命令格式说明
string comparestr1str2 字符串比较,str1 大于、等于、小于时,返回值分别为 1、0、-1。
string equalstr1str2 字符串比较,严格相同返回 1,否则返回 0。可以指定 -nocase 选项,不区分大小写比较。也可以指定 -length 进行定长比较。
string index $str index 返回索引的字符
string range $str index1 index2 返回指定索引范围为 index1~index2 内的字符串
string replace $str index1 index2 newstr 将索引范围为 index1~index2 的字符串替换为 newstr,如果没有指定新字符串则完成删除功能
string mapcharmapstr 根据字典型变量 charmap 键值对的关系,将 str 中的字符作为键进行映射
string length $str 返回字符串的字符长度
string repeat $str times 字符串重复多次组成新的字符串变量
string reverse $str 返回与字符串 str 顺序相反的字符串
string tolower $str 返回小写字符
string toupper $str 返回大写字符
string firststr1str2 返回 str1 在 str2 中第一次出现的位置索引
string laststr1str2 返回 str1 在 str2 中最后一次出现的位置索引
string trim $str chars 删除字符串两端的 chars,默认删除空白
string trimleft $str chars 删除字符串左侧开始的 chars,默认删除空白
string trimright $str chars 删除字符串右侧开始的 chars,默认是空白
string wordend $str index 返回在索引位置的单词之后的字符索引位置
string wordstart $str index 返回在索引位置的单词中第一个字符的索引位置
string is class $str 判断字符串的类型
string match pattern str 字符串匹配模式,匹配成功则返回 1
字符串操作举例
举例:string compare/equal
tcl 中使用 string equal 进行字符串是否相等的比较。严格相等返回值为 1,否则为 0 。
可选项 -nocase 指定比较时不区分大小写,可选项 -length 指定字符串长度进行比较。
set str_ref abcdset str_comp1 abceset str_comp2 abcd# 以下两种方式不等puts [string equal $str_ref $str_comp1]puts [string equal $str_ref $str_comp2]#以下两种方式相等puts [string equal -length 3 $str_ref $str_comp1]puts [string equal -nocase $str_ref $str_comp2]#% 0#% 0#% 1#% 1string compare 不仅能比较是否相等,还能比较 2 个字符串大小(按照 ascii 字符排列)。当两个字符串间的关系为大于、等于、小于时,返回值分别为 1、0、-1。
也可以使用 -nocase、-length 选项。
set str_ref abcdset str_comp1 abceset str_comp2 abcd# abcd abcdputs [string compare $str_ref $str_comp2]# 以下相等puts [string compare -length 3 $str_ref $str_comp1]puts [string compare -nocase $str_ref $str_comp2]#% -1#% 1#% 0#% 0举例:string index/range
string index 用于访问字符串中的单个字符,string range 用于访问字符串中指定范围内的多个字符。
set str forever young.puts 3rd char: [string index $str 3]puts 3-6 char: [string range $str 3 6]#% 3rd char: e#% 3-6 char: ever举例:string replace/map
string replace 可以将指定索引范围内的字符串替换为新的字符串。
如果没有指定新字符串则完成删除功能。
set str forever young.# 替换 young -> happy , young -> sadputs [string replace $str 8 end-1 happy]puts [string replace $str 8 end-1 sad]# 删除 youngputs [string replace $str 8 end-1]#% forever happy.#% forever sad.#% forever .string map 根据指定字典型变量中键值对的关系,将相应的字符串进行映射替换。原字符串中的字符相当于字典中的键,新字符串替换后的值为字典中键对应的值。
替换时按照字典型变量中键出现的顺序进行映射替换,剩余字符串中没有与键匹配的字符,则保留原字符(串)。
set str forever young. bless you.set char_map [dict create forever 22 \\ 33 \\ young 44 ]puts [string map $char_map $str]#% 223344.33bless33you.举例:string length/repeat/reverse
string length/repeat/reverse 具有计算长度、重复字符串、反转字符串的功能。
set str hello, zhihuaputs [string repeat $str 2]puts [string length $str]puts [string reverse $str]#% hello, zhihuahello, zhihua#% 13#% auhihz ,olleh举例:string tolower/toupper
string tolower/toupper 分别返回字符串的小写、大写格式。
puts [string tolower abcd]puts [string toupper abcd]#% abcd#% abcd举例:string first/last
string first **str1 **str2 startindex
string first 用于查找第一个字符串在第二个字符串中的位置,并返回第一个匹配的索引值。命令结尾还可以指定开始查找的索引,即查找范围为 str2 索引之后的字符串。
string last **str1 **str2 endindex
string last 用于查找第一个字符串在第二个字符串中的位置,并返回最后一个匹配的索引值。命令结尾还可以指定结束查找的索引,即查找范围为 str2 索引之前的字符串。
#index 2 7 12 set str abab 3cab acabbputs [string first ab $str]puts [string first ab $str 5]puts [string last ab $str]puts [string last ab $str 10]#% 2#% 7#% 12#% 7举例:string trim/trimleft/trimright
string trim/trimleft/trimright $str chars
根据指定的多个字符 chars,string trim/trimleft/trimright 依次删除字符串 $str 两端、左侧、右侧的字符。只要字符串两端、左侧、右侧的字符存在于指定的 chars 中,则会依次被删除,直至遇到不存在与 chars 中的字符。
如果没有指定 chars 选项,则默认删除空格、制表符、换行符。
set str abccicbcc # 默认删除两边空格puts [string trim $str]# 指定 chars 时不要忘记输入空格puts [string trim $str abc ]# 默认删除左边空格puts [string trimleft $str]# 指定 chars 时没有输入空格,则字符串不会改变puts [string trimleft $str abc]# 默认删除右边空格puts [string trimright $str]puts [string trimright $str bca ]#% abccicbcc#% ic#% abccicbcc #% abccicbcc #% abccicbcc#% abccic举例:string wordend/wordstart
string wordend 返回字符串中包含索引字符的单词的下一个单词的首个字符的索引。
string wordstart 返回字符串中包含索引字符的单词的首个字符的索引。
此命令下,任何连续的字符数字或者下划线,或者除此之外的单个字符,例如空格,都被视为一个单词。
下列示例中,变量有 3 个单词:for_ever、空格、young。
# index 0123456789set str for_ever youngputs [string wordend $str 2]puts [string wordend $str 8]puts [string wordend $str 10]puts [string wordstart $str 2]puts [string wordstart $str 8]puts [string wordstart $str 10]#% 8#% 9#% 14#% 0#% 8#% 9举例:string is
string is class -strict -failindex var $str
string is 命令用于判断字符串的类型,如果字符串符合 tcl 中指定字符类型 ,则返回值为1 ,否则为 0。
当指定 -strict 选项时,对于所有 class 字符类型,当字符串为空时返回值为 1。如果不指定,遇到空字符串时返回值为 1 。
当指定了 -failindex var 选项时,该命令会把第一个不符合 class 类别字符的索引保存到变量 var 中。如果返回值为1,则不进行赋值操作。但是当 class 为 boolean、ture 或 false 类型时,如果返回值为 0 ,var 会被设置为0。
这里简单介绍下 unicore 码:统一码,又称单一码(unicode),它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。而大多数计算机采用 ascii 码是表示所有大小写字母、数字、标点符号和控制字符的 7 位编码方案。统一码包含 128 个 ascii 码字符。
tcl 字符串系统类型 class 取值如下。
alphaunicore 字母double双精度浮点型,可以包含空格
alnum unicore 字母或数字 list 有效的列表结构
ascii ascii 字符 boolean 布尔型值
lower unicore 小写字母 true 布尔型值:真
upper unicore 大写字母 false 布尔型值:假
wordchar 字母数字或连接符 control unicore 控制字符
digit unicore 数字 graph 除空格外的 unicore 打印字符
xdigit 十六进制字符 print 包含空格的 unicore 打印字符
integer 32 位整数型 punct unicore 的标点符号
wideinteger 64 位长整数型 space unicore 的空白字符
现在对各种 class 类型进行举例说明,返回值均为 1 。
string is alpha ăéαß以及汉字string is alnum 1234ăéαß以及汉字string is ascii foreverstring is lower foreverstring is upper foreverstring is wordchar stu_no3string is digit 1234string is xdigit \\x33string is integer 1234string is wideinteger 1234string is double 1e-3string is list {forever young .}string is boolean yesstring is true 1string is false falsestring is control \\nstring is graph £±²string is print £±² string is punct 。\\/string is space 下面为返回值均为 0 的几个简单示例。
string is alpha 1234ăéαß以及汉字string is ascii 。string is lower foreverstring is digit 123.45string is punct 。\\/ string is space a b c下面是 -strict 选项的简单示例。
string is alpha string is integer string is alpha -strict string is integer -strict #% 1#% 1#% 0#% 0下面是 -failindex 选项的简单示例。
set str maryis32.string is alpha -failindex index $strputs failed index: $indexputs failed char: [string index $str $index]failed index: 6failed char: 3字符串匹配(string match)将在下一节说明。
物联网高速增长带来了多大的价值
常见PCB微孔技术介绍
如何双启动64位iOS设备
贺利氏柔性触控显示方案,让触摸屏不再失灵
Surface Pro 7系列配置曝光,使用英特尔第十代酷睿处理器
string命令合集
工业以太网交换技术原理
如何用Python来实现文件系统的操作功能
AMD两款全新锐龙9系4000处理器,有望击败英特尔酷睿i9
可穿戴计算的主要特征及应用
5G在医疗健康领域下一个阶段的落地场景有哪些?
滚柱导轨在重型机械设备中起什么作用?
明年一季度SpaceX载人龙飞船执行首次载人飞行任务
siri是这世界上最好的人工智能 siri如何变成人工智能? 如何把siri弄成人工智能
左手放百度音乐离场,右手拥抱网易云音乐,百度这波操作太“妖”
家电企业的造芯之路进行到哪一步了?
OPPO 5g手机什么时候上市?我的观望只为等待它的出现
透明热收缩管与黑色热收缩管的区别
创维科技研发成果受肯定 用电视重新定义智能人居
瑞萨电子株式会社宣布推出两款符合PMBus标准的全数字DC/DC控制器