TCL 中的数据类型只有一种:字符串。这些字符串可以是字母、数字、布尔值、标点符号等特殊字符的组合。在某些特殊命令的作用下,字符串可以向其他数据类型转换。下面将系统的讲解或回顾下字符串的相关知识。
基本定义
字符串不包含空格等特殊字符时,可以不使用双引号。
字符串包含空格时,可以使用双引号、大括号,也可以使用反斜杠进行转义。
字符串包含特殊字符时,可以使用引号加反斜杠转义,也可以使用大括号。大括号内所有的特殊字符都是普通字符,不做任何处理。
# 无特殊符号,不使用双引号或大括号
set str_noquote Hello_world
# 有特殊符号使用双引号
set str_space1 "Hello world !"
# 有空格,使用 \\ 反斜杠
set str_space2 Hello\\ world\\ !
# 有其他特殊符号,使用“双引号+反斜杠”,或直接使用大括号
set str_schar1 "\\$1 = 6.6 RMB"
set str_schar2 {$1 = 6.6 RMB}
puts $str_noquote
puts $str_space1
puts $str_space2
puts $str_schar1
puts $str_schar2
#% Hello_world
#% Hello world !
#% Hello world !
#% $1 = 6.6 RMB
#% $1 = 6.6 RMB
常用的反斜杠置换(转义序列)陈列如下:
\\ | \\ 反斜杠字符 | \\f | 换页 |
---|---|---|---|
' | ' 单引号字符 | \\n | 新一行 |
'' | " 双引号字符 | \\r | 水平制表符 |
? | ? 问号字符 | \\v | 垂直制表符 |
\\b | 退格 | \\xhh | 十六进制表示字符的 ASCII 码 |
字符串拼接
使用 append 命令可以将多个字符串进行拼接。
set str "I have "
set str_append "a "
append str $str_append "good friend!"
puts $str
#% I have a good friend!
字符串格式
使用 format 命令可以设置字符串格式,常用格式说明如下。
格式 | 说明 |
---|---|
%s | 字符串显示 |
%c | 字符显示 |
%d | 十进制显示 |
%x | 十六进制显示 |
%b | 二进制显示 |
%f | 浮点数显示 |
%e | 指数形式显示 |
format 使用示例如下:
puts "28 in string: [format %s 28]"
# 还可以加入其他需要打印的字符
puts [format "0x32 in char: %c" 0x32]
# 一次性指定多个模式时,需要使用双引号
puts "28 in hex and bin: [format "0b%b 0x%x" 28 28]"
puts "0x1c in dec: [format %d 0x1c]"
puts "0.035 in float: [format %1f 0.035]"
puts "0.035 in exponent: [format %e 0.035]"
#% 28 in string: 28
#% 0x32 in char: 2
#% 28 in hex and bin: 0b11100 0x1c
#% 0x1c in dec: 28
#% 0.035 in float: 0.035000
#% 0.035 in exponent: 3.500000e-02
字符串解析
使用 scan 命令可以解析一个字符串的格式并赋值给变量。返回值为成功转换的个数。
整数赋值格式示例如下:
# 输入为整数,赋值成功
set flag [scan "1314" {%[0-9]} var1]
puts "var is: $var1, and success flag: $flag"
# 输入为整数,格式要求为 a-z, 赋值失败,var2 变量不存在
set flag [scan "1314" {%[a-z]} var2]
puts "success flag: $flag"
#% var is: 1314, and success flag: 1
#% success flag: 0
多个字符/字符串赋值格式示例如下:
set flag [scan "forever" {%[0-9]} var3]
puts "success flag: $flag"
set flag [scan "forever" {%[A-Z]} var4]
puts "success flag: $flag"
# 输入小写字母
set flag [scan "forever" {%[a-z]} var5]
puts "var is: $var5, and success flag: $flag"
#% success flag: 0
#% success flag: 0
#% var is: forever, and success flag: 1
scan 更像是 format 逆操作,能从字符串中提取出相应格式的数据。
set flag [scan "28 in hex and bin: 0b11100 0x1c" \\
"%d in hex and bin: 0b%b 0x%x" \\
var_dec var_bin var_hex]
puts "var is: $var_dec $var_bin $var_hex"
# 按字符解析并赋值,只赋值第一个字符“h”
set flag [scan "hde" "%c" var7]
puts "var is: $var7, and success flag: $flag"
#% var is: 28 28 28
#% var is: 104, and success flag: 1
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
数据
+关注
关注
8文章
6512浏览量
87601 -
TCL
+关注
关注
10文章
1659浏览量
87934 -
字符串
+关注
关注
1文章
552浏览量
20130 -
命令
+关注
关注
5文章
638浏览量
21849
发布评论请先 登录
相关推荐
matlab的一般字符串函数和字符串比较命令
matlab的一般字符串函数和字符串比较命令一般字符串函数 Strings MATLAB中有关字符串函数的说明 Abs 变字符串为数值 Se
发表于 09-22 15:59
字符串存储相关问题
本帖最后由 小凡1314 于 2013-5-15 09:48 编辑
从单片机采集字符串数据,现在数据可以正确采集显示,可是为什么存储的时候有错误,我的所有的采样点存储以后都变成48了,无论踩的是多少,求大神解答!!谢谢!!(字符串变成数组存储的)
发表于 05-15 09:42
串口读取的字符串和字符串输入控件输入的字符串的差别
发现很多时候串口读取的字符串和字符串输入控件输入的字符串虽然看着一样,但是要进行后续操作的话,却总是不一样的。大家有过这种感受吧,知道什么原因 吗?
发表于 06-06 11:44
扫描字符串函数中输入字符串格式问题
使用扫描字符串函数时,如图中所示,提示输入字符串格式不符合预期。例子中格式字符串{%s},对输入字符串的格式要求具体有哪些?ps.我看LV的帮助文档也只提示使用扫描
发表于 08-27 10:25
数据转换、SQL存储,十六进制字符串、正常字符串
到了这个方法。方法:将所有乱码的 ,不乱码的数据显示成十六进制,如下图所示,把正常显示的字符串更换为16进制显示,当显示为16进制字符串时,字符串的显示字符组成仅为1-F的
发表于 05-27 10:29
labview字符串转换
` 本帖最后由 jingzhaojun1986 于 2020-6-12 13:58 编辑
,这个库多用于协议解析,主要实现了16进制字符串到正常字符串的显示正常字符串转换为16进制字符串
发表于 05-19 11:50
字符串拆分
串口连续传来如是字符串”V-12.98C0.18“希望把字符串拆分为V后的为一组数,C后的为一组数。上述字符串应该拆为-12.98和0.18。我尝试了用匹配模式匹配中间的空格分成两个字符串
发表于 05-22 11:57
什么是指向字符串指针?
组成的句子,在C语言中被称为“字符串”。 了解完字符串是由多个字符组成的之后,想要存储字符串就变得非常容易了,我们只需要定义多个变量来存储这些字符
发表于 03-15 14:19
聊聊字符串
大家好,我是惊觉,今天聊聊字符串。字符串的使用场景非常之多,人机交互和双机通信都会用到。比如:通过串口向单片机发送指令,以执行操作或配置参数。单片机读取传感器数据,数据格式是字符串。一般GPS数据
发表于 02-28 06:52
评论