Tcl中的字符串处理

本节介绍string、append、format、scan、binary命令

一、string命令

string 命令

string bytelength str返回用于存储字符串的字节数,由于UTF-8编码的原因,或许与string length返回的字符长度有所不同
string compare ?-nocase? ?-length len? str1 str2根据字典顺序来比较字符串。使用-nocase来完成大小写无关的比较。使用-length来限制比较头len个字符。如果字符串相同则返回0,如果str1的顺序比str2靠前就返回-1,对于其它情况返回1
string equal ?-nocase? str1 str2比较字符串,如果相同则返回1。使用-nocase来完成大小写无关的比较
string first str1 str2返回str2中str1第一次出现的索引位置,若是其中没有发现str1的话就返回-1
string index string index返回位于指定index位置的,索引从0开始计数,使用end表示最后一个字符

string is class ?strict? ?-failindex varname? String

如果string从属于class就返回1,如果指定了-strict,那么就从不匹配空字符串,否则总是要匹配的。如果指定了failindex,那么就会将在string中阻止使其成为class一员的字符索引赋给varname
string last str1 str2返回str2中str1最后一次出现的索引位置,如果没有找到str1就返回-1
string length string返回string中的字符个数
string map ?-nocase? charMap string返回一个根据charMap中输入、输出列表将string中的字符进行映射后而产生的新字符串
string match pattern str如果str匹配pattern就返回1,否则返回0。使用的是统配风格的匹配
string range str i j返回str中从i到j之间的字符串
string repeat str count返回将str重复count次的字符串
string replace str first last ?newstr?返回一个通过把first到last的字符替换为newstr之后的新字符串,或是返回空
string tolower string ?first? ?last?返回string的小写转化形式。first和last决定了在string上的操作范围
string totitle string ?first? ?last?通过将第一个字符替换为Unicode的标题型字符或大写形式,而其余替换为小写形式的方法来将string转换为第一个字符为大写的形式。first和last决定了在string上的操作范围
string toupper string ?first? ?last?返回string的大写形式。first和last决定了在string上的操作范围

string trim string ?chars?

从string两端去除chars中指定的字符。chars默认为空白符

string trimleft string ?chars?

从string开头去除chars中指定的字符。chars默认为空白符
string trimright string ?chars?从string结尾去除chars中指定的字符。chars默认为空白符
string wordend str ix返回str中在索引ix位置包含字符的单词之后的字符的索引位置
string wordstart str ix返回str中在索引ix位置包含字符的单词中第一个字符的索引位置

 

二、append命令

append接收一个变量名作为第一个变元,并把剩余的变元连接到指定变量当前值的后面。

#!/usr/bin/tcl/tcl8.6.9/unix/tclsh

set foo x
append foo a b c
puts stdout $foo

三、format命令

与C语言中printf函数类似,根据一种格式说明来格式化字符串。

四、scan命令

根据格式规格描述来解析一个字符串并把值赋给变量。返回成功完成的转换个数。

五、binary命令

用于在字符串与压缩的二进制表示形式之间进行转换。binary format命令接收数值并根据模板进行压缩。

六、字符串介绍(针对若干string命令进行详细的介绍)

(一)字符串索引

1、Tcl字符串中的字符从0开始记数,特殊索引end用来指定字符串的最后一个字符。

string range abcd 2 end
=>cd

2、通过指定end-N来获取末尾之前的第N个字符

string range abcd 2 end-1
=>c

用来获取字符串的操作:first、last、wordstart、wordend、index、range。

(二)字符串与表达式

可以在expr、if、while中使用比较操作符==、!=、<、>进行字符串的比较。在比较过程中,必须以双引号将字符串值括起来,这样表达式语法分析器才会按照字符串类型来进行识别。

if {$x == "foo"} command

安全的比较字符串的方式是string compare和equal操作。string compare在字符串相等时返回0,在第一个字符串按照词典顺序小于第二个时返回-1,在第一个字符串大于第二个时返回1。

#!/usr/bin/tcl/tcl8.6.9/unix/tclsh

if {[string compare abc abc] == 0} {
  puts stdout 1
}

if {[string equal abc abc]} {
  puts stdout 1
}

(三)字符串的匹配

使用string match匹配字符

字符说明
*匹配任意数量的任意字符
确切地匹配一个字符
[chars]匹配chars中的任意一个字符

(四)字符类

string is 命令用来测试一个字符串是否属于某个特定的类(class)。类是按照Unicode字符集来定义的,因此比以ASCII编码方式指定范围的字符集更加通用。

字符类名目

字符类说明
alnum任何字母或数字字符
alpha任何字母字符

ascii

任何具有7位字符编码的字符(即小于128)
boolean0,1,true,false(无关大小写)
control字符编码小于32而又不是NULL的字符
digit任何数字字符
double有效浮点数
false0或false(无论大小写)
graph不包含空格字符在内的任何打印字符
integer有效整数
lower全为小写的字符串
printalnum的同义词
punct任何标点符号
space空格符、制表符、换行符、回车、垂直制表、退格符
true1或true(无论大小写)
upper全为大写的字符串
wordchar字母、数字和下划线
xdigit有效的十六进制数字

(五)字符串映射

string map命令根据字符映射对字符串进行转换。映射以输入、输出表的形式表示。凡是字符串中包含有输入序列的地方都使用相应的输出进行替换。

 

    原文作者:每天一个小脚印
    原文地址: https://blog.csdn.net/hepiaopiao_wemedia/article/details/100571698
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞