Tcl字符串命令string

string

string option arg ?arg ...?

操作字符串,具体操作由option决定,option支持以下选项:

compare

string compare ?-nocase? ?-length int? string1 string2

对字符串string1和string2逐字符的进行比较。当string1小于、等于或大于string2时返回-1、0或1。如果指定了-length,则只比较string1与string2前int个字符。如果int为负数则忽略。如果指定了-nocase则比较时不区分大小写。

equal

string equal ?-nocase? ?-length int? string1 string2

对字符串string1和string2逐字符的进行比较。如果string1与string2相同则返回1,否则返回0。如果指定了-length,则只比较string1与string2前int个字符。如果int为负数则忽略。如果指定了-nocase则比较时不区分大小写。

is

string is class ?-strict? ?-failindex varName? str

如果str是指定字符类别class的有效成员,则返回1,否则返回0。如果提供了-strict选项,则对于所有类别,空字符串会返回0,否则返回1。如果指定了-failindex选项,当返回0时,str中不是类别class有效字符的索引会被保存到指定的名为varName的变量中,但有三个特例,当class为boolean、true或false时,如果返回0,varName总是被设置为0。如果string is返回1,则不设置变量varName。class的合法取值如下:

类别说明类别说明
alpha任何Unicode字母字符。doubleTcl中double的任何有效形式,周围可以有空格。如果值不在double范围内,则返回0,varName将包含-1。
ascii值小于\u0080的任何字符(值在7位ascii范围内的字符)。list任何合适的列表结构,周围可以有空格。如果不是列表结构,返回0并且varName会被设置为列表解析失败的元素的索引,如果不确定则设置为-1。
lower所有Unicode字母字符都是小写的。boolean任何Tcl_GetBoolean形式的字符串。
upper所有Unicode字母字符都是大写的。true任何Tcl_GetBoolean形式值为真的字符串。
wordchar任何Unicode单词字符,即任何字母数字以及连字符。false任何Tcl_GetBoolean形式值为假的字符串。
alnum任何Unicode字母或数字字符。control任何Unicode控制字符。
digit任何Unicode数字字符,包括[0-9]范围之外的字符。graph除空格外的任何可打印的Unicode字符。
xdigit任何十六进制数字字符([0-9A-Fa-f])。print包括空格在内的任何可打印的Unicode字符。
integerTcl中32位带符号整数值的任何有效字符串格式,周围可以有空格。如果值不在integer范围内,则返回0,varName会被设置为-1。punct任何Unicode标点字符。
wideintegerTcl中64位带符号整数值的任何有效字符串格式,周围可以有空格。如果值不在integer范围内,则返回0,varName会被设置为-1。space任何Unicode空白字符或蒙古元音分隔符(U+180e),但是不包含换行符(U+0085)。

index

string index str charIndex

返回字符串str索引charIndex处的字符。索引是从0开始递增。如果charIndex小于0或大于或等于字符串的长度,则此命令返回一个空字符串。charIndex可以是以下几种形式:

索引说明
integer任何string is integer -strict。
endstr最后一位的索引。
end-N最后一位向前偏移N位。
end+N最后一位向后偏移N位。
M±N索引为整数M和N的和或差。M、N与加减号之间不能有空格。

range

string range str first last

返回str从索引first到last范围内的字符。first和last可以是string index支持的任何形式的索引。first和last取值关系见下方表格。如果不包含任何索引则返回空字符串。

first

string first searchString sourceString ?startindex?

从字符串sourceString中查找searchString。如果找到了,则返回找到的第一个searchString第一个字符在sourceString中的索引,如果未找到,则返回-1。如果指定了startindex,则从指定索引处开始查找。startindex可以是string index支持的任何形式的索引。

last

string last searchString sourceString ?lastindex?

从字符串sourceString中查找searchString。如果找到了,则返回找到最后一个searchString第一个字符在sourceString中的索引,如果未找到,则返回-1。如果指定了lastindex,则只查找lastindex及其之前的字符串。lastindex可以是string index支持的任何形式的索引。

length

string length str

返回字符串str的字符数,与存储字符串的字节数不一定相等。如果是ByteArray对象,那么会返回对象的实际字节长度。

replace

string replace str first last ?newstring? 

删除str中从索引first到last的所有字符,first和last可以是string index支持的任何形式的索引。first和last取值关系见下方表格。如果提供了newstring,则会用newstring替换删除的字符。

map

string map ?-nocase? mapping str

根据字典mapping中的键值对替换str中的字符,str中包含的mapping中的键会被替换成对应的值。如果指定-nocase,则匹配键时将不考虑大小写差异。替换时按mapping中键出现的顺序进行匹配。替换只执行一次,所以替换过的字符对后面的键匹配没有影响,具体见下方示例。

tolower

string tolower str ?first? ?last?

返回一个所有字符都转换为小写形式的str字符串。如果只指定了first,则只转换索引first处的字符,如果fisrt小于0,则视为0。如果同时提供了first与last,则只转换first到last范围内的字符,first和last取值关系见下方表格。first和last可以是string index支持的任何形式的索引。

toupper

string toupper str ?first? ?last?

返回一个所有字符都转换为大写形式的str字符串。如果只指定了first,则只转换索引first处的字符,如果fisrt小于0,则视为0。如果同时提供了first与last,则只转换first到last范围内的字符,first和last取值关系见下方表格。first和last可以是string index支持的任何形式的索引。

totitle

string totitle str ?first? ?last? 

返回一个所有字符都转换为其Unicode标题大小写变体形式的str字符串。如果没有标题大小写变体,则转换为大写,其余的字符串被转换成小写。如果只指定了first,则只转换索引first处的字符,如果fisrt小于0,则视为0。如果同时提供了first与last,则只转换first到last范围内的字符,first和last取值关系见下方表格。first和last可以是string index支持的任何形式的索引。

 trim

string trim str ?chars?

返回一个删除了前导或尾随的包含在chars中的字符的str字符串。如果没有指定chars,则删除空格、制表符、换行符和回车符。

trimleft

string trimleft str ?chars?

返回一个删除了前导的包含在chars中的字符的str字符串。如果没有指定chars,则删除空格、制表符、换行符和回车符。

trimright

string trimright str ?chars? 

返回一个删除了尾随的包含在chars中的字符的str字符串。如果没有指定chars,则删除空格、制表符、换行符和回车符。

match

string match ?-nocase? pattern str

查看字符串str与模式pattern是否匹配,如果提供了nocase选项,则在匹配时不区分大小写。如果匹配返回1,否则返回0。如果pattern中不包含特殊字符,则需要与str完全匹配。在需要匹配特殊字符或者使用[]分组时,此命令易用性较差,会出现一些期望之外的结果。pattern支持以下特殊字符:

字符说明
*匹配字符串中的任何字符序列,包括空字符串。
?匹配字符串中的任何单个字符。
[]匹配[]中给出的任何字符。如果出现如x-y形式的字符,那么x和y之间的任何字符都将匹配
\转义字符,将其后的一个字符按普通字符处理。用于转义特殊的模式字符串*?[]\-。

repeat

string repeat str count 

返回重复count次str的字符串。

reverse

string reverse str

返回与str字符顺序相反的字符串。

bytelength

string bytelength str

已过时的方法,返回字符串在内存中的字节数。

wordstart

string wordstart str charIndex 

已过时的方法,返回字符串str中包含charIndex处索引字符的单词的首个字符的索引。任何连续的字符数字或者下划线,或者除此之外的单个字符都被视为一个单词。

wordend

string wordend str charIndex

已过时的方法,返回字符串str中包含charIndex处索引字符的单词的下一个单词的首个字符的索引。任何连续的字符数字或者下划线,或者除此之外的单个字符都被视为一个单词。

索引取值

起始first结束last说明(length为字符串长度)
first<0last<0不包含任何索引。
fisrt<0last>=0索引范围[0,min(last,length-1)]。
fisrt>0first>last不包含任何索引。
fisrt>0fisrt<=last索引范围[fisrt,min(last,length-1)]。
fisrt>=length 不包含任何索引。

简单示例

set str1 abcdef
set str2 abddef
string compare -length 2 $str1 $str2
string equal -length 2 $str1 $str2
string is alpha \u0061
string is ascii 。
string is lower abc
string is upper ABC
string is wordchar abc_123
string is alnum abc1
string is alnum \u0021
string is digit \u0030
string is digit 123
string is xdigit 00a1
string is integer \u0030\u0031\u0032
string is integer " 123 "
string is wideinteger 1234567890987654321
string is double \u0030.\u0032
string is double 1.2e-10
string is list {a b c d {e f}}
string is boolean on
string is boolean 1
string is true on
string is false false
string is control \t
string is graph ^
string is graph \u00a1
string is print "   "
string is punct \u00a1
string is space \u180e
string index $str1 end
string index $str1 end+-1
string index $str1 end-1
string index $str1 1+2
string index $str1 2
string range $str1 -1 -2
string range $str1 -1 2
string range $str1 -1 10
string range $str1 3 2
string range $str1 3 4
string range $str1 3 10
string first b $str1
string first b $str1 2
string last c $str1
string last c $str1 1
string length $str1
string replace $str1 -1 -2
string replace $str1 -1 2 ABC
string replace $str1 -1 10 a
string replace $str1 3 2
string replace $str1 3 4
string replace $str1 3 10
string map {abc 1 ab 2 a 3 } abcaababc
string map { ab 2 a 3 abc 1} abcaababc
set lowwer abcde
set upper ABCDE
string tolower $upper 1 3
string tolower $upper
string tolower $upper -1
string tolower $upper 5
string toupper $lowwer 1 3
string toupper $lowwer
string toupper $lowwer -1
string toupper $lowwer 5
string totitle $upper 1 3
string totitle $upper
string totitle $upper -1
string totitle $upper 5
set trimming " abcde "
string trim $trimming
string trim $trimming "ade "
string trimlef $trimming
string trimlef $trimming "aed "
string trimright $trimming
string trimright $trimming "aed "
string match abc abc
string match a* abc
string match a?c abbc
string match {[a-z]?[0-9]*} "a 10"
string repeat abc 3
string reverse abc
string bytelength 字节长度
set words "hello world"
string wordstart $words 3
string wordstart $words 5
string wordstart $words 7
string wordend $words 3
string wordend $words 5
string wordend $words 7
相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页