Tcl 的原始資料類型是字元串,我們常常可以在Tcl找到引用字元串的唯一語言。這些字元串可以包含字母數字字元,數字,布爾值,甚至是二進制資料。 TCL采用16位Unicode字元和字母數字字元,可以包含字母包括非拉丁字元,數字或标點符号。
布爾值,可以表示為1,yes 或 true 為真值和0,no 或 false 為假值。
字元串表示
不同于其他語言,在TCL,隻有一個字時,不需要包含雙引号。示例如下,
#!/usr/bin/tclsh
set myVariable hello
puts $myVariable
當上述代碼被執行時,它會産生以下結果。
hello
當要表示多個字元串,我們可以使用雙引号或大括号。它如下所示。
#!/usr/bin/tclsh
set myVariable "hello world"
puts $myVariable
set myVariable {hello world}
puts $myVariable
hello world
hello world
字元串轉義序列
字元文字可以是一個普通的字元(例如,'x'),轉義序列(如“\t'),或通用字元(例如,'\u02C0')。
Tcl有一些字元,當他們前面加一個反斜杠他們将有特殊的含義,它們被用來表示類似的換行符(\n)或制表符(\t)。在這裡,有一些轉義序列代碼的清單:
轉義序列 | 意思 |
---|---|
\\ | \ 字元 |
\' | ' 字元 |
\" | " 字元 |
\? | ? 字元 |
\a | 警報或鈴 |
\b | 倒退 |
\f | 換頁 |
\n | 新一行 |
\r | 回車 |
\t | 水準制表 |
\v | 垂直制表 |
以下為例子來說明一些轉義字元序列:
#!/usr/bin/tclsh
puts("Hello\tWorld\n\n");
讓我們編譯和運作上面的程式,這将産生以下結果:
Hello World
字元串指令
子指令字元串指令清單列如下表。
SN | 方法及描述 |
---|---|
1 | compare string1 string2 比較字string1和string2字典順序。如果相等傳回0,如果string1在string2出現之前傳回-1,否則傳回1。 |
2 | first string1 string2 傳回string1中第一次出現string1索引的位置。如果沒有找到,傳回-1。 |
3 | index string index 傳回索引的字元。 |
4 | last string1 string2 傳回索引string1在string2中出現的最後一次。如果沒有找到,傳回-1。 |
5 | length string 傳回字元串的長度。 |
6 | match pattern string 傳回1,如果該字元串比對模式。 |
7 | range string index1 index2 傳回指定索引範圍内的字元串,index1到index2。 |
8 | tolower string 傳回小寫字元串。 |
9 | toupper string 傳回大寫字元串。 |
10 | trim string ?trimcharacters? 删除字元串兩端的trimcharacters。預設trimcharacters是空白。 |
11 | trimleft string ?trimcharacters? 删除字元串左側開始的trimcharacters。預設trimcharacters是空白。 |
12 | trimright string ?trimcharacters? 删除字元串右端的trimcharacters。預設trimcharacters是空白。 |
13 | wordend findstring index 傳回索引字元findstring包含字元索引單詞。 |
14 | wordstart findstring index 傳回findstring中第一個字元的含有索引中的字元索引的單詞。 |
一些常用的Tcl字元串子指令的例子在下面給出。
字元串比較
#!/usr/bin/tclsh
set s1 "Hello"
set s2 "World"
set s3 "World"
puts [string compare s1 s2]
if {[string compare s1 s2] == 0} {
puts "String \'s1\' and \'s2\' are same.";
}
if {[string compare s1 s2] == -1} {
puts "String \'s1\' comes before \'s2\'.";
}
if {[string compare s2 s1] == 1} {
puts "String \'s2\' comes before \'s1\'.";
}
-1
String 's1' comes before 's2'.
String 's2' comes before 's1'.
字元串索引
#!/usr/bin/tclsh
set s1 "Hello World"
set s2 "o"
puts "First occurrence of $s2 in s1"
puts [string first $s2 $s1] # s1在s2中第一次出現的位置索引
puts "Character at index 0 in s1"
puts [string index $s1 0] # s1在索引值為0處的字元
puts "Last occurrence of $s2 in s1"
puts [string last $s2 $s1] # s1在s2中最後一次出現的位置索引
puts "Word end index in s1"
puts [string wordend $s1 20] # ???
puts "Word start index in s1"
puts [string wordstart $s1 20] # ???
First occurrence of o in s1
4
Character at index 0 in s1
H
Last occurrence of o in s1
7
Word end index in s1
11
Word start index in s1
6
字元串長度
#!/usr/bin/tclsh
set s1 "Hello World"
puts "Length of string s1"
puts [string length $s1]
Length of string s1
11
處理大小寫
#!/usr/bin/tclsh
set s1 "Hello World"
puts "Uppercase string of s1"
puts [string toupper $s1]
puts "Lowercase string of s1"
puts [string tolower $s1]
Uppercase string of s1
HELLO WORLD
Lowercase string of s1
hello world
修整字元
#!/usr/bin/tclsh
set s1 "Hello World"
set s2 "World"
puts "Trim right $s2 in $s1"
puts [string trimright $s1 $s2]
set s2 "Hello"
puts "Trim left $s2 in $s1"
puts [string trimleft $s1 $s2]
set s1 " Hello World "
set s2 " "
puts "Trim characters s1 on both sides of s2"
puts [string trim $s1 $s2]
Trim right World in Hello World
Hello
Trim left Hello in Hello World
World
Trim characters s1 on both sides of s2
Hello World
比對字元串
#!/usr/bin/tclsh
set s1 "[email protected]"
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
Append 指令
#!/usr/bin/tclsh
set s1 "Hello"
append s1 " World"
puts $s1
Hello World
Format 指令
Tcl顯示格式format說明如下清單。
訓示符 | 使用 |
---|---|
%s | |
%d | 整數表示 |
%f | 浮點表示 |
%e | 指數形式浮點表示 |
%x | 十六進制表示 |
一些簡單下面的例子給出。
#!/usr/bin/tclsh
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
Scan指令
scan指令用于分析基于對格式說明的字元串。一些例子如下所示。
#!/usr/bin/tclsh
puts [scan "90" {%[0-9]} m]
puts [scan "abc" {%[a-z]} m]
puts [scan "abc" {%[A-Z]} m]
puts [scan "ABC" {%[A-Z]} m]
當上述代碼被編譯和執行時,它産生了以下結果:
1
1
0
1