打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
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 不包含任何索引。

简单示例

  1. set str1 abcdef
  2. set str2 abddef
  3. string compare -length 2 $str1 $str2
  4. string equal -length 2 $str1 $str2
  5. string is alpha \u0061
  6. string is ascii
  7. string is lower abc
  8. string is upper ABC
  9. string is wordchar abc_123
  10. string is alnum abc1
  11. string is alnum \u0021
  12. string is digit \u0030
  13. string is digit 123
  14. string is xdigit 00a1
  15. string is integer \u0030\u0031\u0032
  16. string is integer ' 123 '
  17. string is wideinteger 1234567890987654321
  18. string is double \u0030.\u0032
  19. string is double 1.2e-10
  20. string is list {a b c d {e f}}
  21. string is boolean on
  22. string is boolean 1
  23. string is true on
  24. string is false false
  25. string is control \t
  26. string is graph ^
  27. string is graph \u00a1
  28. string is print ' '
  29. string is punct \u00a1
  30. string is space \u180e
  31. string index $str1 end
  32. string index $str1 end+-1
  33. string index $str1 end-1
  34. string index $str1 1+2
  35. string index $str1 2
  36. string range $str1 -1 -2
  37. string range $str1 -1 2
  38. string range $str1 -1 10
  39. string range $str1 3 2
  40. string range $str1 3 4
  41. string range $str1 3 10
  42. string first b $str1
  43. string first b $str1 2
  44. string last c $str1
  45. string last c $str1 1
  46. string length $str1
  47. string replace $str1 -1 -2
  48. string replace $str1 -1 2 ABC
  49. string replace $str1 -1 10 a
  50. string replace $str1 3 2
  51. string replace $str1 3 4
  52. string replace $str1 3 10
  53. string map {abc 1 ab 2 a 3 } abcaababc
  54. string map { ab 2 a 3 abc 1} abcaababc
  55. set lowwer abcde
  56. set upper ABCDE
  57. string tolower $upper 1 3
  58. string tolower $upper
  59. string tolower $upper -1
  60. string tolower $upper 5
  61. string toupper $lowwer 1 3
  62. string toupper $lowwer
  63. string toupper $lowwer -1
  64. string toupper $lowwer 5
  65. string totitle $upper 1 3
  66. string totitle $upper
  67. string totitle $upper -1
  68. string totitle $upper 5
  69. set trimming ' abcde '
  70. string trim $trimming
  71. string trim $trimming 'ade '
  72. string trimlef $trimming
  73. string trimlef $trimming 'aed '
  74. string trimright $trimming
  75. string trimright $trimming 'aed '
  76. string match abc abc
  77. string match a* abc
  78. string match a?c abbc
  79. string match {[a-z]?[0-9]*} 'a 10'
  80. string repeat abc 3
  81. string reverse abc
  82. string bytelength 字节长度
  83. set words 'hello world'
  84. string wordstart $words 3
  85. string wordstart $words 5
  86. string wordstart $words 7
  87. string wordend $words 3
  88. string wordend $words 5
  89. string wordend $words 7
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
c#中字符串截取使用的方法
Java转义
JavaScript字符串截取 - 燕雀笔记博 - JavaEye技术网站
FreeCodeCamp基礎算法題答案解析
淦,为什么 '𠮷𠮷𠮷' .length !== 3
C# stiring 专题
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服