Chinaunix首页 | 论坛 | 博客
  • 博客访问: 26559
  • 博文数量: 19
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 187
  • 用 户 组: 普通用户
  • 注册时间: 2015-10-14 16:24
文章分类

全部博文(19)

文章存档

2015年(19)

我的朋友

分类: 系统运维

2015-11-10 10:48:29

对于任何一种脚本语言来说,强大的字符串处理功能都是为人们所津津乐道的,TCL也不例外,那么究竟TCL的字符串处理有什么功能呢?下面将介绍简单模式匹配,在日后的文章中,还将介绍正则表达式。

String命令

String命令实际上是一组操作字符串的命令,它的第一个变元决定了进行什么样子的操作,所有String的命令如下:

命令

说明

string bytelength str

返回用于存储字符串的字节数,由于UTF8编码的原因,这个长度可能与string length返回长度不一样

string compare ?-nocase? ?-length len? Str1 str2

根据词典顺序比较两个字符串,nocase表示忽略大小写,length表示比较前n个字符,如果相同返回值为0,如果str1靠前就返回-1,对于其他情况返回1

 

string equal ? –nocase? Str1 str2

比较字符串,如果相同返回1,否则-1,使用nocase来表示忽略大小写

string first str1 str2

返回str2str1第一次出现的位置,如果没有的话,就返回-1

string is class ?-strict? ?-failindex varname? string

如果string属于某个class就返回,如果指定了strict,那么就不匹配空字符串,否则总是要匹配,如果指定了failindex,就会将在string中阻止其称为class一员的字符串索引赋给varname

string last str1 str2

返回str2str1最后一次出现的位置,如果没有出现就返回-1

 

string length str

返回string中的字符个数

string map ?-nocase? charMap string

返回一个根据charmap中输入输出列表将string中的字符进行映射后产生的字符串。

string match pattern str

如果str匹配pattern就返回1,否则返回0

string ranger str i j

返回字符串中从ij的部分。

string repeat str count

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

string replace str first last ?newstr?

返回一个通过把从firstlast字符串替换为newstr的新字符串,或是返回空

string tolower string ?first? ?last?

返回string的小写形式,firstlast决定了字符串位置

string totitle string ?first? ?last?

将第一个字符替换为大写,其他为小写,firstlast决定了字符串位置

string toupper string ?first? ?last?

返回string的大写格式,firstlast决定了字符串位置

string trim string ?chars?

string两端除去chars中指定的字符,chars默认空

string trimleft string ?chars?

string的左端除去chars中指定的字符,chars默认为空

string trimright string ?chars?

string的右端除去chars指定的字符,chars默认为空

string wordend str ix

返回str中在索引ix位置包含的字符的单词之后的字符的索引位置

string wordstart str ix

返回str中在索引ix位置包含字符串的单词中第一个字符的索引位置。

 

对于我来说,常用的有如下几个方法,lengthequalmatchrangefirst。请看下面的程序

[ppcorn@localhost ppcorn]$ cat strtest.tcl

#!/usr/bin/tclsh

set str1 "str1"

set str2 "str1"

set str3 "isstr1?"

set str4 "the index of str1"

 

# print the length 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 4 9]

 

# print the postion of first str1 in str4, the value should be 13

puts [string first $str1 $str4]

[ppcorn@localhost ppcorn]$ ./strtest.tcl

4

1

1

index

13

 

请注意一下string match的用法,中间使用了*$str1*的用法,这里使用了模糊匹配。一共有三种进行匹配的方式

 

 

*

匹配任意数量字符

?

确切的匹配一个字符

[chars]

匹配chars中的任意一个字符

具体用法如

string match ?? XY

string match {[ab]*x} box

string match {[a-zA-Z0-9]} $char

其中$char为任意字符

等等,上述值都为1,表示匹配,有兴趣的朋友可以自己调试。

阅读(442) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~