1、TCL基础教程 ( 4 )字符串处理对于任何一种脚本语言来说, 强大的字符串处理功能都是为人们所津津乐道的, TCL 也不例外,那么究竟 TCL 的字符串处理有什么功能呢?下面将介绍简单模式匹配, 在日后的文章中, 还将介绍正则表达式。String命令String 命令实际上是一组操作字符串的命令, 它的第一个变元决定了进行什么样子的操作,所有 String 的命令如下:命令说明string bytelength str返回用于存储字符串的字节数,由于 UTF8编码的原因,这个长度可能与string length返回长度不一样string compare ?-nocase? ?-length
2、len?根据词典顺序比较两个字符串,nocase 表示忽略Str1 str2大小写, length 表示比较前n 个字符,如果相同返回值为 0,如果 str1靠前就返回 -1 ,对于其他情况返回 1string equal ? nocase? Str1 str2比较字符串,如果相同返回1,否则 -1 ,使用nocase 来表示忽略大小写string first str1 str2返回 str2 中 str1第一次出现的位置,如果没有的话,就返回 -1 。string is class ?-strict? ?-failindex如果 string 属于某个 class就返回,如果指定了varna
3、me? stringstrict ,那么就不匹配空字符串,否则总是要匹配,如果指定了 failindex,就会将在 string中阻止其称为 class一员的字符串索引赋给varname,string last str1 str2返回 str2 中 str1最后一次出现的位置,如果没有出现就返回 -1string length str返回string中的字符个数string map ?-nocase? charMap string返回一个根据 charmap 中输入输出列表将中的字符进行映射后产生的字符串。stringstring match pattern str如果 str匹配 patte
4、rn就返回 1,否则返回 0,string ranger str i j返回字符串中从 i 到 j的部分。string repeat str count返回将 str 重复 count次的字符串string replace str first last ?newstr?返回一个通过把从 first到 last字符串替换为newstr 的新字符串,或是返回空string tolower string ?first? ?last?返回 string 的小写形式, first和 last决定了字符串位置string totitle string ?first? ?last?将第一个字符替换为大写,其
5、他为小写,first和 last决定了字符串位置string toupper string ?first? ?last?返回 string 的大写格式, first和 last决定了字符串位置string trim string ?chars?从 string两端除去 chars 中指定的字符, chars默认空string trimleft string ?chars?从 string的左端除去 chars 中指定的字符, chars默认为空string trimright string ?chars?从 string的右端除去chars 指定的字符, chars默认为空string wor
6、dend str ix返回 str中在索引 ix位置包含的字符的单词之后的字符的索引位置string wordstart str ix返回 str中在索引 ix位置包含字符串的单词中第一个字符的索引位置。对于我来说,常用的有如下几个方法,length , equal ,match , range , first。请看下面的程序ppcornlocalhost ppcorn$ cat strtest.tcl#!/usr/bin/tclshset str1 str1set str2 str1set str3 isstr1?set str4 the index of str1# print the l
7、ength of str1,the value should be 4 puts string length $str1# print the str1 equal str2, the value should be 1 puts string equal $str1 $str2# print the str2 match str3, the value should be 1 puts string match *$str1* $str3# print the 4 to 9 of str4, the value should be index puts string range $str4
8、4 9# print the postion of first str1 in str4, the value should be 13puts string first $str1 $str4ppcornlocalhost ppcorn$ ./strtest.tcl411index13请注意一下 string match 的用法,中间使用了 *$str1* 的用法,这里使用了模糊匹配。一共有三种进行匹配的方式*?chars匹配任意数量字符确切的匹配一个字符匹配 chars 中的任意一个字符具体用法如string match ? XYstring match ab*x boxstring match a-zA-Z0-9 $char其中 $char 为任意字符等等,上述值都为1,表示匹配,有兴趣的朋友可以自己调试。