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字母字符。 double Tcl中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字符。
integer Tcl中32位带符号整数值的任何有效字符串格式,周围可以有空格。如果值不在integer范围内,则返回0,varName会被设置为-1。 punct 任何Unicode标点字符。
wideinteger Tcl中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。
end str最后一位的索引。
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<0 last<0 不包含任何索引。
fisrt<0 last>=0 索引范围[0,min(last,length-1)]。
fisrt>0 first>last 不包含任何索引。
fisrt>0 fisrt<=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
(0)

相关推荐

  • C#几个经常用到的字符串截取

    一. 1.取字符串的前i个字符 (1)string str1=str.Substring(0,i); (2)string str1=str.Remove(i,str.Length-i); 2.去掉字符 ...

  • JavaScript连载23-String对象及其常用方法

    一.String对象 1.字符串的所有方法,都不会修改字符串本身(字符串是不可变的,操作完成之后会返回一个新的字符串) 注意点:拼接大量的字符串会有性能问题,我们经常使用服务器渲染和模板引擎来解决这个 ...

  • TCL语言笔记:TCL中的String命令

    命     令 说      明 string bytelength str 返回用于存储字符串的字节数. string compare ?-nocase? ?- length len? str1 s ...

  • 为什么要用内插字符串代替string.format

    知道为什么要用内插字符串,只有踩过坑的人才能明白,如果你曾今使用string.format超5个以上占位符,那其中的痛苦我想你肯定是能够共鸣的. 一:痛苦经历 先上一段曾今写过的一段代码,大家来体会一 ...

  • C#字符串类String的使用(二)

    格式化字符串 //格式化字符串 //一个静态的Format方法,用于将字符串数据格式化成指定的格式 string newstr = String.Format("{0},{1}!!!&quo ...

  • 7 网页上显示字符串 render+{'string': string}+{{ string }}

    表白:黑白圣堂血天使,天剑鬼刀阿修罗.  讲解对象:/7 网页上显示字符串 render+{'string': string}+{{ string }} 作者:融水公子 rsgz  Django开发流 ...

  • C#的字符串优化-String.Intern、IsInterned

    首先看一段程序: 这个没有什么特殊的地方,相信大家都知道运行结果: 第二个WriteLine使用==比较两个字符串,返回False是因为他们不一致.而最后一个WriteLine返回False,因为a. ...

  • 后处理TCL脚本语言:命令、脚本文件、值

    一.UG/Post的开发方法与使用的工具: UG/Post的开发,其核心是TCL语言的运用.TCL是Tool Command Language的缩写,英文发音为tickle,中文名叫工具命令语言,是一 ...

  • String字符串操作

    String strStart = "<count>"; String strEnd = "</<count>"; //定位首尾标 ...

  • 《Java 底层原理》String字符串详解

    前言 Java 字符串底层是如何存储的,如何提高性能的,今天就来好好了解一下. 字符串的存储结构 Jvm 有专门的字符串常量池用于存放字符串,存放字符串的数据结构是HashTable. HashTab ...

  • C string字符串比较方法详解

    字符串可以和类型相同的字符串相比较,也可以和具有同样字符类型的数组比较. Basic_string 类模板既提供了  >.<.==.>=.<=.!= 等比较运算符,还提供了 c ...