字符串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