0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

string命令合集

CHANBAEK 来源:数字IC与好好生活的两居室 作者:除夕之夜啊 2023-03-29 11:43 次阅读

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 "abcd"
set str_comp1 "abce"
set 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
#% 1

string compare 不仅能比较是否相等,还能比较 2 个字符串大小(按照 ASCII 字符排列)。当两个字符串间的关系为大于、等于、小于时,返回值分别为 1、0、-1。

也可以使用 -nocase、-length 选项。

set str_ref "abcd"
set str_comp1 "abce"
set str_comp2 "ABCd"
# abcd < abce
puts [string compare $str_ref $str_comp1]
# abcd > ABCd
puts [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 -> sad
puts "[string replace $str 8 end-1 "happy"]"
puts "[string replace $str 8 end-1 "sad"]"
# 删除 young
puts "[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, Zhihua"
puts [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 acabb"
puts [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  0123456789
set str "For_ever Young"
puts [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 取值如下。

alpha Unicore 字母 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 "Forever"
string is lower "forever"
string is upper "FOREVER"
string is wordchar "Stu_No3"
string is digit 1234
string is xdigit "\\x33"
string is integer 1234
string is wideinteger 1234


string is double 1e-3
string is list {Forever Young .}
string is boolean yes
string is true 1
string is false false
string is control \\n
string is graph "£±²"
string is print " £±² "
string is punct "。\\/"
string is space "    "

下面为返回值均为 0 的几个简单示例。

string is alpha "1234ăéαß以及汉字"
string is ascii "。"
string is lower "Forever"
string is digit 123.45
string 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 $str
puts "Failed index: $index"
puts "Failed char: [string index $str $index]"


Failed index: 6
Failed char: 3

字符串匹配(string match)将在下一节说明。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • TCL
    TCL
    +关注

    关注

    10

    文章

    1715

    浏览量

    88443
  • 字符串
    +关注

    关注

    1

    文章

    577

    浏览量

    20485
  • 命令
    +关注

    关注

    5

    文章

    678

    浏览量

    21981
  • string
    +关注

    关注

    0

    文章

    40

    浏览量

    4717
收藏 人收藏

    评论

    相关推荐

    STRING VHDL程序

    STRING VHDL程序,感兴趣的小伙伴们可以瞧一瞧。
    发表于 11-11 11:55 0次下载

    Tcl学习:string compare命令对字符串的比较

    string equal则是对两个字符串进行简单的比较,如两者严格相同,则返回1,否则返回0(与stringcompare的返回值是不同的)。
    的头像 发表于 09-23 10:10 8921次阅读

    MATLAB的常用命令合集详细资料免费下载

    本文档的主要内容详细介绍的是MATLAB的常用命令合集详细资料免费下载,汇集MATLAB命令,快速查询MATLAB命令含义,适合初学者。
    发表于 11-09 08:00 16次下载
    MATLAB的常用<b class='flag-5'>命令</b><b class='flag-5'>合集</b>详细资料免费下载

    linux的History命令代码的详细资料合集免费下载

    本文档的主要内容详细介绍的是linux的History命令代码的详细资料合集免费下载。
    发表于 11-19 08:00 2次下载

    Vim的命令合集

    命令历史以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令
    的头像 发表于 02-03 17:26 2582次阅读

    176条DevOps人员常用的linux命令速查表资料合集

    本文档详细介绍的是176条DevOps人员常用的linux命令速查表资料合集
    的头像 发表于 03-30 10:17 3905次阅读

    AUTO CAD命令的中英文对照查询表资料合集免费下载

    本文档的主要内容详细介绍的是AUTO CAD命令的中英文对照查询表资料合集免费下载。
    发表于 04-28 08:00 3次下载
    AUTO CAD<b class='flag-5'>命令</b>的中英文对照查询表资料<b class='flag-5'>合集</b>免费下载

    红帽linux命令合集免费下载

    本文档的主要内容详细介绍的是红帽linux命令合集免费下载。
    发表于 06-26 16:27 4次下载

    Linux的命令大全合集免费下载

    本文档的主要内容详细介绍的是Linux的命令大全合集免费下载。
    发表于 08-13 08:00 5次下载
    Linux的<b class='flag-5'>命令</b>大全<b class='flag-5'>合集</b>免费下载

    MATLAB仿真命令集的资料合集免费下载

    本文档的主要内容详细介绍的是MATLAB仿真命令集的资料合集免费下载。
    发表于 09-11 17:04 15次下载
    MATLAB仿真<b class='flag-5'>命令</b>集的资料<b class='flag-5'>合集</b>免费下载

    CAD的快捷键命令合集免费下载

    本文档的主要内容详细介绍的是CAD的快捷键命令合集免费下载。
    发表于 12-16 08:00 4次下载
    CAD的快捷键<b class='flag-5'>命令</b><b class='flag-5'>合集</b>免费下载

    如何使用C语言实现动态扩容的string

    众所周知,C++ 中的string使用比较方便,关于C++ 中的string源码实现可以看我的这篇文章:源码分析C++的string的实现
    的头像 发表于 10-25 10:59 1988次阅读

    u-boot常用的命令合集

    u-boot常用的命令合集
    发表于 02-11 09:50 2次下载

    UTF8String是如何编码的?

    UniversalString和UTF8String 都支持完全相同的字符集,前64K 字符都是BMPString 中的字符集。请注意,BMPString 的前128 个字符与IA5String
    的头像 发表于 08-26 09:55 2041次阅读
    UTF8<b class='flag-5'>String</b>是如何编码的?

    bigdecimal转string类型

    将BigDecimal转换为String类型是在Java编程中常常遇到的一个问题。BigDecimal是Java中用于表示高精度十进制数的类,而String则是用于表示文本字符串的数据类型。在某些
    的头像 发表于 11-30 11:09 6267次阅读