TCL Strings
append Append values to variable
binary Insert and extract fields from binary strings
regexp Regular expression pattern matching
ex1:
regexp {^[0-9]+$} 510
->1
regexp {^[0-9]+$} -510
-> 0
regexp {^([0-9]+) *([a-z]+)} "Walk 10 km” a b c
# a = 10km ; b = 10 ; c =km
-indices 返回索引值,a 为5 9 ,b 为5 6 ,c 为 7 9
-inline 返回数据列表 {10 km} 10 km
-line 激活分换行的匹配 $除普通功能外,与新行前的空字符串匹配。^除了它的普通功能外,与新行后的空字符串匹配
regsub Regular expression string substution
regsub there "they live there lives" their x
->1 #返回1 匹配成功,x = they live their lives
regsub thrre "they live there lives" their x
->0 #返回0 匹配不成功 ,x= they live there lives.无论是否发生替换,都会设置x 变量
-all 一直查找替换,否则只替换1次。返回替换次数
regsub zz abbab a x # x=zzbbab
regsub -all zz abbab a x # x=zzbbzzb 返回值为2
-nocase 不区分大小写
-start 从指定字符处开始查找。命令指定字符中一个字符索引
-line 启动区分换行匹配
--明确的表示命令选项结束
regsub -all -- a|b axaab && x #x=aaxaaaabb &表示被替换的子字符串
regsub -all -- (a+)(ba*) aabaabxab {z\2} x # x=zbaabxzb 后面有一个b,前面没有1个b的序列替换为z
format printf() -style string formatting
ex1:
set msg [format "%s is %d years old]
set msg "$name is $age years old"
ex2:
puts [format "%4d %12.3f" $i [expr exp($i)]]
scan sscanf() -style string formatting
ex1:
scan "16 units,24.2% margin" "%d units, %f margin" a b #a的值为16,b的值为24.2
->2 #完成两次转换
ex2:
proc next c {
scna $c %c i # ASCII 转为整数
format %c [expr {$i + 1}] #整数加一转为 ASCII
}
next a
-> b
string compare Lexical(词汇的) string comparison
string first Search for first occurrence of substring
string index Return character from string
string last Search for last occurance of substring
string length Return number of characters in string
string range Return range of characters in string
string tolower Covert to lowercase
string toupper Covert to uppercase
string trim Remove leading and trailing characters
string trimleft Remove leading characters
string trimright Remove trailing characters
string wordend Return end position of word in string
string wordstart Return start position of word in string
subst Blackslash,command,variable substitutions
string map dictionary string # string中出现dictionary关键字置换为相应的值 -nocase 不区分大小写
string is digital 1234 #数据类型判断,ascii/boolean/double/float/integer/list/lower/alpha
->1
Tcl 有两种匹配模式:
1.简单的通配符样式,源于unix外壳中的文件名展开机制
* 0个或多个任意字符组成的字符匹配
? 一个任意字符匹配
[chars] chars中任意一个字符匹配
\x 于单字符x匹配,用于特殊字符,如* ? [ ] \
2.正则表达式模式匹配
. 匹配任意的单个字符
^ 指定与输入字符串的开头匹配
$指定与输入字符串的结尾匹配
\m 指定单词的开头进行匹配
\M 指定单词的结尾进行匹配
\k 匹配非字母也非数字的字符k(\.匹配字面上的句点符号)
[chars] 与chars 中的字母匹配
(regexp) 匹配正则表达式 regexp 用于分组或识别匹配的子字符串
* 与0或多个前述的原子组成的序列匹配
+ 与1个或多个前述的原子组成的序列匹配
?与空字符串匹配,或与前述的一个原子匹配
{m} 与前述原子正好匹配m次的序列
{m,} 与前述原子至少匹配m次的序列
{m,n} 至少匹配m次,最多n次
re1 | re2 任意一个指定正则表达式的匹配
转义序列
\a 铃声
\b 退格
\B 反斜线,与\ 相同
\cX 取得给定字符X的低5位,然后以这5位为低5位,其他补0做转义后的字符
\e 转义字符
\f 换页
\n 换行
\r 回车
\t 制表符
分支和量词
* + ? 被称为量词,可以跟在原子后面,用来指定它的重复次数。
* 0或多个该原子组成的匹配序列
+ 1个或多个该原子组成的匹配序列
? 空字符串或与这个字符串匹配字符串匹配
{num} 0-255 之间的整数
逆向引用
([ab])\1 #匹配aa bb
非捕获子表达式:处理速度快,不能逆向引用非捕获子表达式。
(?:expression)
TCL Strings的更多相关文章
- Tcl之group arguments
1 doubel quotes This allows substitutions to occur within the quotations - or "interpolation&qu ...
- Tcl之Math
expr is for Tcl to do math operations. It takes all of its arguments ("2 + 2" for example) ...
- Hacker Rank: Two Strings - thinking in C# 15+ ways
March 18, 2016 Problem statement: https://www.hackerrank.com/challenges/two-strings/submissions/code ...
- Tcl internal variables
Tcl internal variables eryar@163.com 在Tcl中内置了一些变量,并赋予了一定的功能.内置变量列表如下: 变量名称 功能描述 argc 指命令行参数的个数. argv ...
- StackOverFlow排错翻译 - Python字符串替换: How do I replace everything between two strings without replacing the strings?
StackOverFlow排错翻译 - Python字符串替换: How do I replace everything between two strings without replacing t ...
- Multiply Strings
Given two numbers represented as strings, return multiplication of the numbers as a string. Note: Th ...
- [LeetCode] Add Strings 字符串相加
Given two non-negative numbers num1 and num2 represented as string, return the sum of num1 and num2. ...
- [LeetCode] Encode and Decode Strings 加码解码字符串
Design an algorithm to encode a list of strings to a string. The encoded string is then sent over th ...
- [LeetCode] Group Shifted Strings 群组偏移字符串
Given a string, we can "shift" each of its letter to its successive letter, for example: & ...
随机推荐
- 互联网的“ip分组交换技术”
(1)从名字分析 从“ip分组交换”这个名字中,我们看看涉及哪些事情. 1)交换 主要涉及两类交换. · 交换机:负责网内部数据交换 · 路由器:负责网间的数据交换. ip分组交换技术的核心就是路由器 ...
- SpringBoot学习- 6、MetaData描述无法tip显示问题
SpringBoot学习足迹 (一)先说说现象 1.在application.properties可以定义属性并在MetaData中增加description 如 生成additional-sprin ...
- ANDROID开发之问题积累及解决方案(四)
首先贴出问题类型: 程序无法启动,查看logcat,提示如下信息: W/dalvikvm(679): PR_CAPBSET_DROP 32 failed: Invalid argument. Plea ...
- Python开发坦克大战
Python不仅能开发网站,爬虫数据分析等,他其实也可以写游戏,接下来就给大家分享下坦克大战的代码: PS:很多人在学习Python的过程中,往往因为遇问题解决不了或者没好的教程从而导致自己放弃,为此 ...
- Java基础面试题总结二
1,什么是字符串常量池? 字符串的分配,和其他的对象分配一样,耗费高昂的时间与空间代价.JVM为了提高性能和减少内存开销,在实例化字符串常量的时候进行了一些优化.为 了减少在JVM中创建的字符串的数量 ...
- 在cc.EventListener.TOUCH_ONE_BY_ONE事件中判断拖动物离哪边近飞向那边
需将拖动物坐标和要飞向物坐标转化为整个layer的坐标,因为人们判断远近是根据整个layer来看的.
- 洛谷P1170 兔八哥与猎人 欧拉函数的应用
https://www.luogu.org/problem/P1170 #include<bits/stdc++.h> using namespace std; ],b[],c[],d[] ...
- linq和隐式类型var
隐式类型 var 强类型,声明的时候必须给变量赋值,编译器会根据值来确定其类型.只能出现在局部变量或脚本代码中. 使用范围: 简单类型:如int string等 复杂类型:如数组.类等 逻辑语句:fo ...
- 剑指offer 面试题 删除链表中重复的节点
题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理后 ...
- Request原理