Tcl学习之--字符串

字符串操作

Tcl的精髓在于对字符串的处理,很多函数非常有用,特别是正则表达式。下面列出其常用的函数.

l sting index:  --> 索引

l sting range:  --> 范围

l sting length: --> 长度

l sting toupper 和string tolower: --> 大小写

l sting trim、 trimleft, trimright:   --> 剪裁

三种剪裁方式,每种方式都需要两个参数:指定字符串,指定裁剪方式. trim: 把在开头和结尾出现要剪裁的字符删去,返回删除后的结果:

l string repeat: --> 重复

l sting first和 string last: --> 搜索

两个都是简单搜索,找到后返回索引值,如果找不到,则返回-1;


sting compare和string equal: -->比较

stingcompare: 读入两个参数,并对其进行比较。

1)  如果两个字符串相同,返回0

2)  如果第一个字符串在字典中小于第二个,则返回-1

3)  如果第一个字符串在字典中顺序大于第二个,返回1

stringequal: 对两个字符串进行简单的字符串比较,严格相同,返回1, 否则返回0,该命令同样区分大小写,除非加-nocase选项,还可以设置-length选项,只对指定长度个字符比较.


sting replace和string map: --> 置换

stringreplace: 简单替换

stringmap: 根据字典将字符串中的相应文本置换为某个值。语法:

stringmap dictionary string


sting is: --> 类型判断

1)  如果为指定的类型,返回1

2)  如果非指定的类型,返回0


format: --> 字符串格式化

和C中的很printf很相像,作用却没那么大.常用下面几种方式:

%s: 字符串

%f: 浮点型

%d: 整数型

%x: 十六进制


scan: --> 字符串解析

format的逆操作,就好比列表中join, split一样。它从一个有格式的字符串控制下解析这个字符串,把这些变成字符串相对应的字段,置于Tcl变量中.

上面2代表成功完成两次转换.


string match: --> 模式匹配

Tcl有两种模式匹配方式。一种简单,一种复杂。

简单: 通配符模式

复杂: 正则表达式

stringmatch就是一种通配符匹配模式,成功返回1,否则返回0

stringmatch ?-nocase? pattern string


正则表达式: --> 复杂模式匹配

regexp: -->获取

一般用法:获取两个参数,正则表达式模式和输入字符串,返回0,1

常用用法:输入字符串后存放更多变量,用于放置匹配到的字符串

regsub: --> 替换

第一个参数: 正则表达式模式

第二个参数: 输入字符串,返回0,1

第三个参数: 替换字符串

第四个参数: 替换后的字符串

常用选项:

-all: 找到所有匹配的选项,返回匹配到的次数

-nocase:不区分大小写

-line:多行匹配开关

--:明确标识命令选项结束

-start:指定字符中一个字符的索引

注意: \代表特殊含义的字符,\2代表匹配到的第二个子组baa, b,

所以{z\2}真正的意思就是用z->a,如果匹配到baa,b则不做处理!

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-29 04:46:36

Tcl学习之--字符串的相关文章

python学习之 字符串前'r'的用法

python学习之 字符串前'r'的用法 在打开文件的时候open(r'c:\....') 加r和不加''r是有区别的 'r'是防止字符转义的 如果路径中出现'\t'的话 不加r的话\t就会被转义 而加了'r'之后'\t'就能保留原有的样子 在字符串赋值的时候 前面加'r'可以防止字符串在时候的时候不被转义 原理是在转义字符前加'\' 例: s=r'\tt' print(s) Output: '\tt' s='\tt' print(s) Output: '        t' python学习之

java学习-关于字符串String

有必要总结记录一下java的学习,否则,永远只是记忆碎片化和always google(费时) 刚好,小伙伴给了一份自己做的review,在学习的过程中,update一下自己的见解和学习内容: 关于String: 1 package string_keywords; 2 /** 3 * 参考url: http://developer.51cto.com/art/201106/266454.htm 4 * 5 * 常量池(constant pool)指的是在编译期被确定,并被保存在已编译的.cla

Tcl学习之--表达式

l 数值操作数 表达式的操作数通常是整数或实数.整数可能是十进制,二进制,八进制或十六进制.比如下面同一个整数 335               --> 十进制 0o517           --> 八进制 0x14f            --> 十六进制 0b10100111 --> 二进制 处理0开头的十进制整数最安全的方法是使用scan命令. 下面就是很常用的例子: l 操作符及其优先级别 Tcl与C类似,相同的优先级符从左到右进行计算.比如:10-4-3与(10-4)

Redis源码学习:字符串

Redis源码学习:字符串 1.初识SDS 1.1 SDS定义 Redis定义了一个叫做sdshdr(SDS or simple dynamic string)的数据结构.SDS不仅用于 保存字符串,还用来当做缓冲区,例如AOF缓冲区或输入缓冲区等.如下所示,整数len和free分别表示buf数组中已使用的长度和剩余可用的长度,buf是一个原生C字符串,以\0结尾. sds就是sdshdr中char buf[]的别名,后面能看到,各种操作函数的入参和返回值都是sds而非sdshdr.那sdshd

《python基础教程(第二版)》学习笔记 字符串(第3章)

<python基础教程(第二版)>学习笔记 字符串(第3章)所有的基本的序列操作(索引,分片,乘法,判断成员资格,求长度,求最大最小值)对字符串也适用.字符串是不可以改变的:%左侧是格式字符串,右侧是需要格式化的值print '%s=%d' % ('x',100) ==> x=100%% 格式字符串中出现 %模板字符串:from string import Templates=Template('$x is 100');  s.substitute(x='ABC');  ==> '

R语言学习(5)-字符串和因子

字符串和因子 1.字符串 创建字符串 > c("HELLO","WORLD") [1] "HELLO" "WORLD" 使用paste函数连接字符串 > paste(c("hello","hi"),"world") [1] "hello world" "hi world" > paste(c("hel

python3学习之字符串

s='this is test message' s.capitalize()    首字母大写,其它小写 s.find(sub[, start[, end]])      在指定范围内(默认全部字符串),查找sub是否包含在字符串中,包含时                                             返回第一次匹配的index,否则返回-1 s.rfind(sub[, start[, end]])    在指定范围内(默认全部字符串),查找sub是否包含在字符串中,

程序员编程技术学习笔记——字符串包含

程序员编程技术学习笔记--字符串包含 1.题目描述 给定两个分别由字母组成的字符串A和字符串B,字符串B的长度比字符串A短.请问,如何最快地判断字符串B中所有字母是否都在字符串A里?为了简单起见,我们规定输入的字符串只包含大写英文字母,请实现函数boolStringContains(string &A, string &B) 比如,如果是下面两个字符串: String 1:ABCD String 2:BAD 答案是true,即String2里的字母在String1里也都有,或者说Strin

golang学习笔记————字符串

字符串的创建 在golang中 字符串是使用双引号("")包裹住的字符序列: 字符是使用单引号('')包裹住的单一字符: 声明字符串的方式:var strvalue string 声明并创建的方式:strvalue := "This is a string!"; KeyPoint: 一旦字符串变量被初始化后,则不可单独改变该字符串序列中的某一字符:但该字符串变量可以重新被赋值: Ex:   strvalue := "abcd" fmt.Print