名称
string - 操作字符串语法
string option arg ? arg ...?描述
根据option选项执行一个或多个字符串操作。合法的options为:-
string bytelength string
- 返回一个十进制的字符串给出当前字符串在内存中的字节数。因为UTF-8编码使用一到三个字节表示Unicode字符,所以字节长度可能和字符长度并不相同。一个脚本一般不关心字节长度,在多数情况中可以使用 string length操作(包括决定一个Tcl字节数组对象的长度)。查阅 Tcl_NumUtfChars手册条目去了解关于UTF-8更多的细节。 string compare ?-nocase? ?-length int? string1 string2
- 逐字符对照比较字符串 string1和 string2,返回-1、0或1。取决于 string1在字典顺序上是小于、等于还是大约 string2。如果指定了 -length,只需要比较头 length个字符,如果 -length是负数则被忽略。如果指定了 -nocase,字符串在比较时与大小写无关。 string equal ?-nocase? ?-length int? string1 string2
- 逐字符比较字符串string1和string2。如果两个字符串相同返回1,不同返回0。如果指定 -length,只需要比较头 length个字符,如果 -length是负数则被忽略。如果指定了 -nocase,字符串在比较时与大小写无关。 string first needleString haystackString ?startIndex?
-
搜寻在
haystackString字符串中与
needleString字符串完全匹配的字符段,如果找到了返回第一次匹配在
haystackString字符串中的索引,如果找不到则返回-1。如果指定了
startIndex则在
haystackString中从索引
startIndex开始搜索。例如:
string first a 0a23456789abcdef 5
将返回 10,但是string first a 0123456789abcdef 11
将返回 -1。
string index string charIndex
-
返回字符串中指定索引的字符,字符串的索引从0开始,
charIndex可以由以下指定:
-
integer
- 字符串中指定索引的字符。 end
- 字符串最后一个字符。 end-N
- 字符串最后一个字符的索引减去 N所得索引的字符。 end+N
- 字符串最后一个字符的索引加上 N所得索引的字符。(N为负才有意义) M+N
- 字符串中索引等于 M+ N的字符。 M-N
- 字符串中索引等于 M- N的字符。
-
M的尾部和N的头部不能有空白,如果charIndex小于0或大于等于字符串长度则返回一个空字符串。
string is class ?-strict? ?-failindex varname? string
-
如果
string是指定
class中的成员就返回1,否则返回0。如果指定了
-strict,空字符串就返回0,不指定则返回1。如果指定了
-failindex,那么将导致不匹配的索引储存在varname中,如果返回1则
varname不会被赋值。列举了以下字符类:
-
alnum
- 任何字母和数字字符。 alpha
- 任何字母。 ascii
- 任何ascii码(小于128位的编码)。 boolean
- 0、1、true、false。 control
- 任何控制字符(编码小于32但不是NULL的字符)。 digit
- 任何数字字符。 double
- 任何浮点字符,如果是超出浮点数范围而返回0时, vername被置为-1。 false
- 0、false。 graph
- 任何打印字符,除了空格字符。 integer
- 任何32位的有效整数,如果超出32位有效整数而返回0时, vername被置为-1。 list
- 任何列表结构。如果不是合法的列表结构就会返回0, varname内存储导致列表检查失败的元素的索引,如果不能够确认则返回-1。 lower
- 任何小写字母。 print
- 任何打印字符。 punct
- 任何标点符号。 space
- 空格符、制表符、换行符、回车、垂直制表符、退格符。 true
- 1、true。 upper
- 任何大写字母。 wideinteger
- 长整数,如果超过了长整数范围则返回0, vername被置为-1。 wordchar
- 任何字母、数字和下划线。 xdigit
- 任何16位进制字符([0-9][A-F][a-f])。
在boolean、true和false的情况下,如果返回0,varname将被置为0。
string last needleString haystackString ?lastIndex?
-
搜寻在
haystackString字符串中与
needleString字符串完全匹配的字符段,如果找到了返回最后一次匹配在
haystackString字符串中的索引,如果找不到则返回-1。如果指定了
startIndex则在
haystackString中只搜索到
startIndex,不再向后搜索。例如:
string last a 0a23456789abcdef 15
将返回 10,但是string last a 0a23456789abcdef 9
将返回 1。
string length string
- 返回string中字符的个数。这个字符个数不是存储在 string中的字节数,只有当 string是个字节数组或者是个二进制编码的I/O通道时将返回字节数。 string map ?-nocase? mapping string
-
根据mapping表里面的key-value关系替换string中的子字符串,mapping是一个类似于key value key value …的列表,每个在
string中的
key都会被
value替换。如果指定了
-nocase,匹配就不需要考虑差别。
key和
value都可以是多字符的,置换按照一定的顺序进行,所以在列表前面的
key会被优先置换。
string只会被置换一次,所以前面做过置换操作的字符将不匹配后面的
key。例如:
string map {abc 1 ab 2 a 3 1 0} 1abcaababcabababc
将返回 01321221。如果前面的key是后面一个key的前缀,那么就会全部匹配前面的key,后面的key不会被匹配,举例如下:
string map {1 0 ab 2 a 3 abc 1} 1abcaababcabababc
将返回 02c322c222c。
string match ?-nocase? pattern string
- 如果 string匹配 pattern就返回1,否则返回0。如果指定了 -nocase样式匹配将是迟钝模式。对于两个字符串,需要完全相同,除非在 pattern中指定了下面的匹配风格: string range string first last
- 返回 string中从 first到 last指定索引范围内的所有字符。 first和 last指定索引,如果 first小于0则按照0来处理,如果 last大于或者等于字符串长度则按照end来处理,如果 first大于 last则返回空字符串。 string repeat string count
- 返回将 string重复 count次的字符串。 string replace string first last ?newstring?
- 移除从 first到 last指定索引范围内的所有字符。如果指定了 newstring,此字符串将被放置在被替换字符的位置。 first和 last指定索引,如果 first小于0则按照0来处理,如果 last大于或者等于字符串长度则按照 end来处理,如果 first大于 last或者字符串长度,或者 last小于0,则返回原字符串。 string reverse string
- 返回一个字符串,长度和 string相同但是字符的顺序相反。 string tolower string ?first? ?last?
- 返回 string的小写字符串。 first和 last指定了进行小写转换的范围, first和 last符合索引的指定方法。 string totitle string ?first? ?last?
- 将第一个字符转换为Unicode的标题字符或者大写形式,而将其余的字符转换为小写形式。 first和 last指定了进行小写转换的范围, first和 last符合索引的指定方法。 string toupper string ?first? ?last?
- 返回 string的大写字符串。 first和 last指定了进行小写转换的范围, first和 last符合索引的指定方法。 string trim string ?chars?
- 返回去掉了 string开头和结尾 chars字符的字符串,如果不指定 chars,则空白符号将被移出(包括空格符、制表符、换行符、回车符)。 string trimleft string ?chars?
- 返回去掉了 string开头 chars字符的字符串,如果不指定 chars,则空白符号将被移出(包括空格符、制表符、换行符、回车符)。 string trimright string ?chars?
- 返回去掉了 string结尾 chars字符的字符串,如果不指定 chars,则空白符号将被移出(包括空格符、制表符、换行符、回车符)。 string wordend string charIndex
-
返回
string中指定
charIndex所在单词的下一个单词第一个字符的索引。构成单词的字符包括字母、数字和下划线。例如:
string wordend hhd8***3khd 1
将返回 4,为第一个*的索引。(相当于hhd8为一个单词,而第一个*为另外一个单词的开始)string wordend hhd8***3khd 4
将返回 5,为第二个*的索引。(相当于第一和第二个*为两个单词,结果总是返回查找的索引所在单词的下一个单词第一个字符索引)string wordend hhd8***3khd 6
将返回7,为3khd的索引。
string wordstart string charIndex
- 返回 string中指定 charInde所在单词的第一个字符的索引。构成单词的字符包括字母、数字和下划线。
示例
测试字符串变量是否以非空的 foobar开头。set length [string length $string]
if {$length == 0} {
set isPrefix 0
} else {
set isPrefix [string equal -length $length $string "foobar"]
}