字符串string是Tcl 的原始数据类型,字符串可以包含字母数字字符,数字,布尔值,甚至是二进制数据。
yes / true | 1 |
no / false | 0 |
字符串表示:字符串只有一个字时,不需要包含 “ ” ,当要表示多个字符时,使用 “ ” 和 { } 包括。
字符串转义,在“ \ ”后加字母有特殊作用。
\a --警报和铃 \b -- 退格 \f -- 换页 \n -- 换行 \r -- 回车 \t -- 水平制表 \v -- 垂直制表
\\ -- 字符\ \' -- 字符' \"-- 字符" \? -- 字符?
字符串比较和匹配命令
string compare
string1
string2
——相比string1
于string2
的返回值:
- -1 ..... 如果
string1
小于string2
- 0 ........ 如果
string1
等于string2
- 1 ........ 如果
string1
大于string2
string first
string1
string2
——返回string1
开始第一个匹配 的字符的索引,string2
如果没有匹配,则返回 -1
string last
string1
string2
——返回string1
开始最后一个匹配的字符的索引,string2
如果没有匹配,则返回 -1
string wordend
string
index
——返回包含index
'th 个字符的单词中最后一个字符之后的字符索引string
。单词是任何连续的字母、数字或下划线字符或单个其他字符的集合。
string wordstart
string
index
——返回单词中包含 的第index
' 个字符 的第一个字符的索引string
。
string match
pattern
string
——如果 string 与pattern
匹配, 则返回 1
#compare比较大小
set s1 "Hello"
set s2 "World"
set s3 "World"
puts [string compare s1 s2]
puts [string compare s2 s3]
>> -1
0
#first—索引s2在s1中第一次出现的位置
#last—索引s2在s1中最后一次出现的位置
set s1 "Hello World"
set s2 "o"
puts [string first $s2 $s1]
puts [string last $s2 $s1]
>> 4
7
#Match匹配字符串
set s1 "test@test.com"
set s2 "*@*.com"
puts "Matching pattern s2 in s1"
puts [string match "*@*.com" $s1 ]
puts "Matching pattern tcl in s1"
puts [string match {tcl} $s1
>> Matching pattern s2 in s1
1
Matching pattern tcl in s1
0
字符串的子命令
string length
string
——返回 string的长度
set s1 "Hello World"
puts "Length of string s1"
puts [string length $s1]
>> Length of string s1
11
string index
string
index
——返回 string
第index
th 个字符
set s1 "Hello World"
puts [string index $s1 1]
>> e
string range
string
first
last
——返回由从first
到 last 的字符组成的字符串
set string "this is my test string"
puts "\"[string range $string 5 10]\" are characters between the 5'th and 10'th"
>> "is my " are characters between the 5'th and 10'th
string
tolower
string
——返回string
所有字母从大写转换为小写
set string "THIS IS STRING"
puts "[string tolower $string]"
>> this is string
string
toupper
string
——返回string
所有字母从小写转换为大写
set string "this is string"
puts "[string toupper $string]"
>> THIS IS STRING
string
trim
string
?trimChars?
——返回从两端移除string
所有出现的trimChars
。默认情况下trimChars
是空格(空格、制表符、换行符)。
注:字符不被视为字符“块” - 换句话说, string trim "davidw" dw
将返回字符串 avi
而不是davi
set s1 " Hello World "
set s2 " "
puts "Trim characters s1 on both sides of s2"
puts [string trim $s1 $s2]
>> Trim characters s1 on both sides of s2
Hello World
string
trimleft
string
?trimChars?
——从左侧移除string
所有出现的 返回trimChars
。默认情况下trimChars
是空格(空格、制表符、换行符)
set s1 "Hello World"
set s2 "World"
puts "Trim right $s2 in $s1"
puts [string trimright $s1 $s2]
>> Trim right World in Hello World
Hello
string
trimright
string
?trimChars?
——返回从右侧删除string
所有出现的trimChars
。默认情况下trimChars
是空格(空格、制表符、换行符)
set s1 "Hello World"
set s2 "Hello"
puts "Trim left $s2 in $s1"
puts [string trimleft $s1 $s2]
>> Trim left Hello in Hello World
World
format
formatString
?arg1 arg2 ... argN?
——返回以与 ANSIsprintf
过程相同的方式格式化的字符串 。
FormatString
是对要使用的格式的描述。该协议的完整定义在format
手册页中。该定义的一个有用子集是formatString
由字面量词、反斜杠序列和% fields
下面 列出 %fields 指示符的展现形式和作用
%s
... 数据是一个字符串%d
... 数据是十进制整数%x
... 数据是一个十六进制整数%o
... 数据是一个八进制整数%f
... 数据是一个浮点数%-
... 左对齐该字段中的数据%+
... 右对齐该字段中的数据
puts [format "%f" 43.5]
puts [format "%e" 43.5]
puts [format "%d %s" 4 tuts]
puts [format "%s" "Tcl Language"]
puts [format "%x" 40]
>> 43.500000
4.350000e+01
4 tuts
Tcl Language
28