tcl/tk参考——字符串操作string

名称

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
逐字符对照比较字符串 string1string2,返回-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])。

booleantruefalse的情况下,如果返回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,匹配就不需要考虑差别。 keyvalue都可以是多字符的,置换按照一定的顺序进行,所以在列表前面的 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中指定了下面的匹配风格:
*
匹配任何长度字符,包括空字符。
?
匹配任何一个字符。
[chars]
匹配任何给定的char字符。如果是以x-y的形式出现则匹配x到y之间的所有字符。如果指定了 -nocase,范围被扩展到小写字母,比如即使“_”并不在{[A-z]}中,{[A-z]}也匹配“_”,使用了-nocase后{[A-z]}被认为是{[A-Za-z]} 。
/x
匹配单一的字符x,提供了在 pattern中匹配特殊字符 *?[]/的方法。
string range string first last
返回 string中从 firstlast指定索引范围内的所有字符。 firstlast指定索引,如果 first小于0则按照0来处理,如果 last大于或者等于字符串长度则按照end来处理,如果 first大于 last则返回空字符串。
string repeat string count
返回将 string重复 count次的字符串。
string replace string first last ?newstring?
移除从 firstlast指定索引范围内的所有字符。如果指定了 newstring,此字符串将被放置在被替换字符的位置。 firstlast指定索引,如果 first小于0则按照0来处理,如果 last大于或者等于字符串长度则按照 end来处理,如果 first大于 last或者字符串长度,或者 last小于0,则返回原字符串。
string reverse string
返回一个字符串,长度和 string相同但是字符的顺序相反。
string tolower string ?first? ?last?
返回 string的小写字符串。 firstlast指定了进行小写转换的范围, firstlast符合索引的指定方法。
string totitle string ?first? ?last?
将第一个字符转换为Unicode的标题字符或者大写形式,而将其余的字符转换为小写形式。 firstlast指定了进行小写转换的范围, firstlast符合索引的指定方法。
string toupper string ?first? ?last?
返回 string的大写字符串。 firstlast指定了进行小写转换的范围, firstlast符合索引的指定方法。
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"]
}
 
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值