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
  • 4
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Tcl中,有几个用于字符串处理的常用函数和操作符。首先,可以使用`string compare`函数来比较两个字符串。该函数在字符串相等时返回0,在第一个字符串按照词典顺序小于第二个字符串时返回-1,在第一个字符串大于第二个字符串时返回1。例如,在Tcl脚本中可以这样使用: ``` if {[string compare abc abc == 0} { puts stdout 1 } ``` 另外,还可以使用`string equal`函数来判断两个字符串是否相等。如果相等,则返回1,否则返回0。例如: ``` if {[string equal abc abc]} { puts stdout 1 } ``` 此外,Tcl还提供了其他一些字符串处理函数。例如,`string trim`函数可以返回一个删除了尾随的包含在指定字符集中的字符的字符串。如果未指定字符集,则默认删除空格、制表符、换行符和回车符。用法如下: ``` set str [string trim " abc "] ``` 另外,`string match`函数可以用于模式匹配,返回匹配结果。用法如下: ``` if {[string match -nocase "ab*" $str]} { # 字符串以"ab"开头,忽略大小写 } ``` 还有一个常用的函数是`string length`,用于返回字符串的长度。用法如下: ``` set len [string length $str] ``` 以上就是一些在Tcl中处理字符串的常用函数和操作符。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Tcl中的字符串处理](https://blog.csdn.net/hepiaopiao_wemedia/article/details/100571698)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Tcl字符串命令string](https://blog.csdn.net/asty9000/article/details/90681912)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值