- Tcl 教程
- Tcl - 首頁
- Tcl - 概述
- Tcl - 環境設定
- Tcl - 特殊變數
- Tcl - 基本語法
- Tcl - 命令
- Tcl - 資料型別
- Tcl - 變數
- Tcl - 運算子
- Tcl - 決策
- Tcl - 迴圈
- Tcl - 陣列
- Tcl - 字串
- Tcl - 列表
- Tcl - 字典
- Tcl - 過程
- Tcl - 包
- Tcl - 名稱空間
- Tcl - 檔案 I/O
- Tcl - 錯誤處理
- Tcl - 內建函式
- Tcl - 正則表示式
- Tk 教程
- Tk - 概述
- Tk - 環境
- Tk - 特殊變數
- Tk - 小部件概述
- Tk - 基本小部件
- Tk - 佈局小部件
- Tk - 選擇小部件
- Tk - 畫布小部件
- Tk - 超級小部件
- Tk - 字型
- Tk - 影像
- Tk - 事件
- Tk - 視窗管理器
- Tk - 幾何管理器
- Tcl/Tk 有用資源
- Tcl/Tk - 快速指南
- Tcl/Tk - 有用資源
- Tcl/Tk - 討論
Tcl - 字串
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\nTutorialspoint";
編譯並執行上述程式碼時,將產生以下結果:
Hello World Tutorialspoint
字串命令
字串命令的子命令列表如下表所示:
| 序號 | 方法及描述 |
|---|---|
| 1 | compare string1 string2 按字典順序比較 string1 和 string2。如果相等則返回 0,如果 string1 在 string2 之前則返回 -1,否則返回 1。 |
| 2 | first string1 string2 返回 string1 在 string2 中第一次出現的索引。如果未找到,則返回 -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 $s2 $s3] == 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 after \'s1\'.";
}
編譯並執行上述程式碼時,將產生以下結果:
-1 String 's1' and 's2' are same. String 's1' comes before 's2'. String 's2' comes after 's1'.
字串索引
即時演示#!/usr/bin/tclsh set s1 "Hello World" set s2 "o" puts "First occurrence of $s2 in s1" puts [string first $s2 $s1] puts "Character at index 0 in s1" puts [string index $s1 0] puts "Last occurrence of $s2 in s1" puts [string last $s2 $s1] 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 "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
追加命令
即時演示#!/usr/bin/tclsh set s1 "Hello" append s1 " World" puts $s1
編譯並執行上述程式碼時,將產生以下結果:
Hello World
格式化命令
下表顯示了 Tcl 中可用的格式說明符列表:
| 說明符 | 用途 |
|---|---|
| %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
掃描命令
掃描命令用於根據格式說明符解析字串。以下給出了一些示例。
即時演示#!/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