Tcl的原始数据类型是字符串,通常我们可以在Tcl上找到仅作为字符串语言的引号.这些字符串可以包含字母数字字符,只包含数字,布尔值甚至二进制数据. Tcl使用16位unicode字符,字母数字字符可以包含非拉丁字符,数字或标点符号.
布尔值可以表示为1,yes或true表示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).在这里,你有一些这样的转义序列代码列表 :
转义序列 | 含义 |
---|---|
\\ | \ character |
\' | 'character |
" | "character |
\? | ?字符 |
\ a | 提醒或响铃 |
\ b | Backspace |
\f | 表格提要 |
\ n | 换行符 |
\ r | 回车 |
\ t | 水平标签 |
\v | 垂直标签 |
以下是显示一些转义序列字符的示例 :
#!/usr/bin/tclsh puts "Hello\tWorld\n\nTutorialspoint";
编译并执行上述代码时,会产生以下结果 :
Hello World Tutorialspoint
列表string命令的子命令列在下表 :
Sr.No. | 方法&说明 |
---|---|
1 | compare string1 string2 以字面方式比较string1和string2.如果相等则返回0,如果string1在string2之前返回-1,则返回-1,否则返回1. |
2 | first string1 string2 返回string2中第一次出现string1的索引.如果未找到,则返回-1. |
3 | index string index 返回索引处的字符. |
4 | last string1 string2 返回string2中最后一次出现string1的索引.如果未找到,则返回-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? 删除字符串两端的修剪字符.默认的修剪字符是空格. |
11 | trimleft string?trimcharacters? 删除字符串左开头的修剪字符.默认的修剪字符是空格. |
12 | trimright string?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' 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]
当上面的代码被编译并执行时ted,它产生以下结果 :
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&minus中可用的格式说明符列表;
Specifier | 使用 |
---|---|
%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