Tcl的字符串操作:比较字符串

在Tcl中,可利用string compare命令对字符串进行比较。该命令需要接收两个字符串参数。如果第一个字符串在字典中先于第二个字符串,返回-1;如果第一个字符串在字典中后于第二个字符串,返回1,如果两者相同,返回0,如下图所示:

string equal则是对两个字符串进行简单的比较,如两者严格相同,则返回1,否则返回0(与stringcompare的返回值是不同的),如下图所示:

string compare和stringequal都是区分大小写的,但如果添加选项-nocase,则不再区分大小写,如下图所示:

还可以通过-length选项指定对字符串的前length个字符进行比较操作,如下图所示。这里可以看到-length的在命令中的正确位置:

 

尽管字符串比较支持直接使用数学表达式(> 、<和==),但从代码风格和执行效率的角度而言,string compare和string equal更为高效。,通过timing命令可获取Tcl命令的执行时间,对比下来,string equal命令耗时最短 ;

结论:

-借助string compare命令可对字符串进行比较

-借助string equal命令可判断两个字符串是否严格相等

-string compare和stringequal都支持-nocase和-length选项

-尽管字符串比较支持直接使用数学符合,但使用上述两个命令更为高效

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Tcl字符串正则表达式是一种用于匹配和搜索字符串的模式。Tcl正则表达式基于1003.2规范和一些Perl5扩展。它包含一个或多个约束或量化原子的连接。正则表达式可以使用不同的风格,包括扩展正则(ERE)、基本正则(BRE)和高级正则(ARE)。Tcl实现了高级正则表达式风格,它在ERE的基础上添加了一些重要的扩展。通常,正则表达式的风格由应用程序的方法指定。如果表达式以“:”开头,则剩余的表达式为高级正则表达式(ARE)。如果以“=”开头,则其余的表达式被视为普通字符。Tcl字符串正则表达式的语法为regexp ?optionalSwitches? patterns ?searchString? fullMatch subMatch1 ... subMatchn。[1][2] BRE与ERE在几个方面有所不同。在BRE中,字符“|”、“+”和“?”只是普通字符,没有与它们的功能等价的字符。边界的分隔符是“\{”和“\}”,而“{”和“}”本身为普通字符。嵌套子表达式的括号是“\(\)”和“\(\)”和“\(\)”,而“(”和“)”本身为普通字符。除了在正则表达式或圆括号子表达式的开头以外,“^”均为普通字符。除了在正则表达式或圆括号子表达式的末尾以外,“$”均为普通字符。如果“*”出现在正则表达式或圆括号子表达式的开头(或者有一个前导字符^),则为普通字符。只能使用个位数的反向引用。除了“\<”和“\>”等价于“[[:<:]]”和“[[:>:]]”之外,没有其他转义字符可用。[3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值