考完Base,感觉通过做70和123题最大的收获就是对变量长度的理解。故总结出来分享一下,一点拙见,还望指正。
一、关于变量长度
1、如果没有通过length定义变量长度,则字符变量长度为第一次赋值是长度,数值变量长度默认为8,且默认以best12.格式保存
eg1:name变量的长度为5,num变量的长度为8,默认输出格式best12.
2、由于数值变量默认输出格式best12.,在转换为字符变量格式的时候,会变成12位字符变量,不足12位的在前面补足空格
eg2:
拼接函数自动将num转换为字符变量,可以看出变量pin长度为17(5+12),123前面补足了9个空格。
3、如果通过length定义了字符变量的长度,则不足定义长度位数的会在后面补足空格
eg3:
该例定义了变量长度为8,赋值时不足8位后面补空格(注意前面有一个空格,因此后面补了两个空格)
4、关于length函数,我们看一下帮助菜单length函数的定义:
LENGTH Function
Returns the length of a non-blank character string, excludingtrailing blanks, and returns 1 for a blank character string.
eg4:
赋值时jimmy前面有一个空格,后面有两个空格,结果a=6 b=12。length函数返回的是变量去掉尾部空格后的实际字符长度。
5、关于substr\trim\scan函数,SUBSTR和TRIM不更改变量的存储长度,也是在新生成变量后面补空格,scan函数结果默认长度200。
二、一些对变量中空格发生作用的字符函数总结
1、只对首尾空格起作用字符函数
trim() 去掉字符串尾部空格,如果字符串为空,则返回一个空格
left() 把字符串开头的空格移到尾部
strip() 去掉字符串开头和结尾的所有空格
cat() 与||作用类似,保留首尾全部空格
catt() 但是连接之前会去掉各字符串尾部空格,相当于连接符结合trim()使用
cats() 但是连接之前会去掉首尾全部空格,相当于连接符结合strip()使用
catx() 但是连接之前会去掉首尾全部空格,并且在字符串之间加上一个指定的字符串
2、如果想去除字符中间空格,使用compress函数