Tcl 字符串

Tcl 字符串

Tcl 的原始数据类型是字符串,通常我们可以将 Tcl 视为仅支持字符串的语言。这些字符串可以包含字母数字字符、仅数字、布尔值,甚至二进制数据。Tcl 使用 16 位 Unicode 字符,字母数字字符可以包含拉丁字符外的字母、数字或标点符号。

布尔值可以用 1、yes 或者 true 表示 true,用 0、no 或者 false 表示 false。

字符串表示

与其他语言不同,Tcl 中当字符串只有一个单词时,不需要加双引号。一个示例可以是−

#!/usr/bin/tclsh

set myVariable hello
puts $myVariable

当上述代码被执行时,会产生以下结果−

hello

当我们想表示多个字符串时,可以使用双引号或花括号。如下所示-

#!/usr/bin/tclsh

set myVariable "hello world"
puts myVariable
set myVariable {hello world}
putsmyVariable

当执行上述代码时,会产生以下结果:

hello world
hello world

字符串转义序列

字符字面量可以是普通字符(例如,’x’),转义序列(例如,’\t’),或者通用字符(例如,’\u02C0’)。

在Tcl中,当某些字符在前面加上反斜杠时,它们将具有特殊含义,并用于表示换行符(\n)或制表符(\t)等。这里列举了一些常见的转义序列代码:

Escape sequence | Meaning
—|—
\\ | \ character
\’ | ‘ character
\” | ” character
\? | ? character
\a | Alert or bell
\b | Backspace
\f | Form feed
\n | Newline
\r | Carriage return
\t | Horizontal tab
\v | Vertical tab
以下是显示一些转义序列字符的示例:

#!/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 返回string2中string1第一次出现的索引。如果没有找到,返回-1。
3 index string index 返回索引处的字符。
4 last string1 string2 返回string2中string1最后一次出现的索引。如果没有找到,返回-1。
5 length string 返回字符串的长度。
6 match pattern string 如果字符串与pattern匹配,则返回1。
7 range string index1 index2 返回字符串中从index1到index2的字符。
8 tolower string 返回小写字符串。
9 toupper string 返回大写字符串。
10 trim string ?trimcharacters? 去掉string两端的trimcharacters。默认的trimcharacters是空白字符。
11 trimleft string ?trimcharacters? 去掉string左开始的trimcharacters。默认的trimcharacters是空白字符。
12 trimright string ?trimcharacters? 去掉string右结束的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 s1s2]
if {[string compare s2s3] == 0} {
   puts "String \'s1\' and \'s2\' are same.";
}

if {[string compare s1s2] == -1} {
   puts "String \'s1\' comes before \'s2\'.";
}

if {[string compare s2s1] == 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 firsts2 s1]
puts "Character at index 0 in s1"
puts [string indexs1 0]
puts "Last occurrence of s2 in s1"
puts [string lasts2 s1]
puts "Word end index in s1"
puts [string wordends1 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 tolowers1]

当上面的代码被编译和执行时,将产生以下结果−

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 ins1"
puts [string trimright s1s2]

set s2 "Hello"
puts "Trim left s2 ins1"
puts [string trimleft s1s2]

set s1 " Hello World "
set s2 " "
puts "Trim characters s1 on both sides of s2"
puts [string trim s1s2]

当上述代码被编译并执行时,它产生以下结果−

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程