9.1  Visual LISP 的字符串处理函数
在 Visual LISP 中有关字符串处理函数有:
z字符串大小写转换函数——strcase
z测量字符串长度的函数——strlen
z数字与字符串互换函数 itoa、atoi、atof、rtos 与 angtos
z字符与 ASCII 码互换函数——ascii 与 chr
z字符串连接函数——strcat
z字符串提取函数——substr
z字符串匹配函数——wcmatch
z将字符串转换成表或原子的函数——read
以下我们就分8小节来说明。
9.1.1  字符串大小写转换函数——strcase
strcase的作用是将字符串中所有的字母转换成大写或小写后返回。其标准语法如下:(strcase string [T])
其中,T是个可有可无的参数,实际上只要这个参数不为 nil,就执行小写的转换;如果是预设或为nil,就执行大写转换。通常我们要进行小写转换时只要使用 T 即可。例如:_$ (strcase "String")
"STRING"
_$ (strcase "String" T)
"string"
9.1.2  测量字符串长度的函数——strlen
strlen 函数的作用是返回一个字符串中的字符个数。其标准语法如下:
(strlen [string]...)
其中,[string]...可以是一个或多个字符串。如果仅一个,则返回该字符串的长度;若是多个,则返回所有字符串的总长度。例如:
130
_$ (strlen "xiao")
4
_$ (strlen "I" "Love" "you" )
8
9.1.3  数字与字符串互换函数 itoa、atoi、atof、rtos与angtos itoa函数
itoa 函数可以将一整数转换成字符串,并返回转换的结果。其标准语法如下:(itoa int)
其中,int 代表整数。例如:
_$ (itoa 33)
"33"
atoi 函数
atoi函数可以将一个字符串转换成整数,并返回转换的结果。其标准语法如下:(atoi string)
其中,string 代表要转换的字符串。例如:
_$ (atoi "23")
23
_$ (atoi "23.9")
23
atof函数
atof函数用来将一个字符串转换成实数,并返回转换的结果。其标准语法如下: (atof string)
其中,string 代表要转换的字符串。例如:
_$ (atof "23.9")
23.9
_$ (atof "23")
131
23.0
rtos函数
rtos 函数可将数字转换成字符串,并返回转换的结果。其标准语法如下:(rtos number [mode [precision]])
其中,number 是指要转换的数值。rtos 函数将根据 mode 参数来决定转换的类型。而 precision 参数则
决定了转换资料的精度。有效的Mode参数值如表9-1所示。
表9-1  rots函数可用的mode值
mode    1    2    3    4    5
类型科学小数工程(英尺和
十进制英寸)
建筑(英尺和分
数英寸)
分数
例如:
_$ (rtos 23.9 1 3)  返回 "2.390E+01"
此例将实数 23.9 的值转转换成科学格式的字符串,精度为3。
angtos 函数
angtos 函数用来将一个以弧度为单位的角度值转换成字符串,并返回结果。其标准语法如下:
(angtos angle [unit [precision]])
其中,angle 表示要转换的实数角度值(单位:弧度),unit 是代表转换角度单位类型的代码数。如果省略参数 unit,则此函数将使用系统变量AUNITS 的目前值。有效的 unit 参数值如表9-2所示。
表 9-2  angtos函数可用的unit值
unit 0    1    2    3    4
类型(十进制)度度/分/秒百分度弧度勘测单位而precision参数用于指定返回值所需的小数点位数。如果省略此参数,函数将使用系统变量AUPREC的目前值。例如:
_$ (angtos 3.141592654 0 4) 返回  "180"
132
9.1.4  字符与ASCII码互换函数——ascii 与 chr
ascii 函数
ascii 函数的作用是将字符串中的第一个字符转换成其 ASCII 码后返回。其标准语法如下:
(ascii string)
其中,string 代表要转换的字符串。例如:
_$ (ascii "F")
70
_$ (ascii "f")
102
_$ (ascii "first")
102
chr函数
chr 函数做用将字符 ASCII 码的整数转换成对应的单一字符。其标准语法如下:(chr integer)
其中,integer 为代表字符的 ASCII 码,其范围应在1~255 之间。例如:_$ (chr 75)  返回 "K"
_$ (chr 125) 返回 "}"
9.1.5  字符串连接函数——strcat
strcat 函数会将多个字符串拼接成一个长字符串后返回。其标准语法如下:(strcat [string [string]...])
其中,string 为待连接的字符串。例如:
_$ (strcat "L" "ove") 返回  "Love"
133
9.1.6  字符串提取函数——substr
substr 函数将返回字符串中的一个子字符串。其标准语法如下:
(substr string start [length])
substr 函数将从字符串 string 的 start 处开始提取字符,长度为 length,并于取出子字符串后返回。例如:
_$ (substr "123abc" 3)
"3abc"
_$ (substr "123abc" 3 1)
"3"
_$ (substr "abcde" 3 2)
"3a"
9.1.7  字符串匹配函数——wcmatch
wcmatch 函数用来将模式字符串与某个指定的字符串进行匹配比较。其标准语法如下:(wcmatch string pattern)
其中,str 为要比较的字符串,pattern 为模式字符串。模式字符串是由字符和一些通配字符所构成。所谓“通配字符”就是指“*”与“?”这类的特殊字符。在使用wcmatch 的过程中,您可以包含通配字符,而在多个模式条件之间使用逗号(,)来分隔。如果string 匹配pattern,那么wcmatch将返回T,否则返回 nil。详细的通配字符含义请参考表9-3所示。
表 9-3 有效的通配字符列表
通配字符定义
# 匹配任意的单个数值字符
@ 匹配任意的单个字母字符
. 匹配任意的单个非字母的数值字符
* 匹配任意的字符序列,包括空字符串,可出现在任何位置。
? 匹配任意的单个字符
(续表)
vba计算字符串长度134
通配字符定义
~ 如果 ~ 为模式字符串的第一个字符,则表示欲匹配除此字符串之外的任
意字符串
[...] 匹配括号中的任意一个字符
[~...] 匹配不在括号中的任意单个字符
- 在括号里指明单个字符的取值范围
, 分隔两个模式字符串
` 特殊转义字符(按字义读取随后的字符)
例如:
_$ (wcmatch "God" "G*") 返回T
_$ (wcmatch "Name" "???,~*m*,N*") 返回T
只要字符串符合三个模式字符串中的任一个即返回T。
9.1.8  将字符串转换成表或原子的函数——read
read 函数将返回字符串中的第一个表或第一个原子。其标准语法如下:
(read [string])
read 函数可将字符串中的第一个表或原子转换成对应的数据类型并返回。
例如:
_$ (read "abc def") 返回  ABC
此时将返回字符串中第1个“词”,即ABC,这里的ABC为符号。
$ (read "(879 56.2 12)") 返回  (879 56.2 12)
此时,返回的结果是一个表。因此有时我们会将资料用括号括起来,并将之储存在文本文件中,如:(5 1.2 3.4 5.5 6.0 3.9),然后使用 read-line 函数读出后变成一个字符串“(5 1.2 3.4 5.5 6.0 3.9)”。最后再使用 read 函数来将之转换为 Visual LISP 容易操作的表。如此,再来存取其中的资料就会又快又简单。我们将在以后章节的范例中应用到。
9.2  VBA的字符串处理函数
在VBA中有关字符串处理函数有:
z字符串大小写转换函数——lcase 与 ucase
135

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。