字符串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 string1string2——返回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第indexth 个字符
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
