tcl/tk学习笔记:字符串(二)string命令集

1.从字符串中获取字符 string index 和string range

string index string n; 获取string的第n个字符,从0开始算

例 string index "Sample string" 3; 结果是p。


string range string n1 n2;获取string的第n1到n2个字符

例 string range "Sample string" 3 9;结果是“ple str”。


2.长度 string length 大小写转换 string toupper /string tolower

例 string length "Sample string"; 结果是13

例 string toupper "Sample string";结果是"SAMPLE STRING".


3.剪裁 string trim 、string trimleft、string trimright

例 string trim aaxxxabad abc; 从左右开始,去掉字符串两边在“abc”中出现的任意字符,直到遇到不属于“abc”的字符为止。

trimleft、trimright和trim类似,不过一个是去掉左边的,一个是去掉右这的


4.简单搜索 string first、string last

例 string first wh "I do not know where he is now."; 查找"wh"第一次出现的位置,结果是14。

例 string last wh "I do not know where he is now. who ?"; 查找"wh"最后一次出现的位置,结果是31。


5.字符串比较string compare 、string equal

例 string compare Michigan Minnesota;结果是-1。如果第一个字符串在字典中先于第二个字符串,返回-1,反之返回1,如果两字符串相同则返回0

string equal 判断两字符串是否相同,如果是则返回1,否则为0


6.字符串置换 string replace

例 string replace "San Diego, California" 4 8 "Francisco"; 将字符串的4到8替换成"Francisco"。


7.判断字符串类型 string is

例 string is digit 125; 结果是1

if {![string is integer $input]} {
          error "Invalid input parameter: $input. Please enter a integer number"
    }


该命令支持的字符类型有

  字符类                          说明

alnum              任何字母或数字字符

alpha               任何字母字符

ascii                 任何具有 7 位字符编码的字符(即,小于 128)

boolean            0,1,true,false(不分大小写)

control             字符编码小于 32 而又不是 NULL 的字符

digit                 任何数字字符

double             有效浮点数

false                 0,false(不分大小写)

graph               不包含空格字符在内的任何打印字符

integer             有效整数

lower                全为小写的字符串

print                 alnum 的同义词

punct               任何标点符号

space              空格符、制表符、换行符、回车、垂直制表、退格符

true                 1、true(不分大小写)

upper              全为大写的字符串

wordchar         字母、数字和下划线

8.字符串映射(匹配)

tcl有两种模式匹配, 一种是简单的"通配符"样式,一种是正则表达式

string match实现了通配符样式的匹配

string match ?-nocase? 模式 string ;??表示可选,-nocase表示忽略大小写,常用的通配符与C类似,*表示任意字符串,?表示任意的一个字符,

[chars]表示与chars中的任意一个字符匹配,\char用来匹配单个字符,也可用来匹配*,?,[]等特殊字符。

例 string match a* Abc;结果为0,表示不匹配

    string match a* -nocase Abc;结果为1,表示匹配

    string match {[ab]*} bac;结果为1

    string match {*\?} "Wow!";结果为0,找不到?

    string match {*\?} "Wow?";结果为1

通配符样式的模式可以匹配很多简单的任务,例如*.[ch]可以用来匹配所有以.c和.h结尾的字符串。但无法法完成一些复杂的任务,例如

检测一个字符串是否凶信了所有的数字,用[1-9]只能匹配单个的数字。


9.调用正则表达式匹配 regexp

例 regexp {^[0-9]+$} 125sub330;"^+$"是从头到尾,这个语句检查字符串是否全部由数字组成。

  

10.匹配并替换 regsub

例 regsub there "they live there lives" their str; 第一个参数是正则表达式模式,第二个是待检测的字符串,与regexp相同,返回1代表匹配,

0代表不匹配,但regsub还要将匹配的部分用第三个参数"their"替换,第四个参数str是一个变量,用来放替换后的字符串。


  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值