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

(五)字符串映射

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

发布了78 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/hepiaopiao_wemedia/article/details/100571698