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
廣告

© . All rights reserved.