string

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

string字符串库

一、字符串基础

编程最重要的基础技术就是操作字符串,所以我们首先向大家介绍字符串库.

字符串就是由多个字符组成的字符串,注意字符与字符串是不同的.字符只是字符串中一个最小的单位。

一个英文字符、在内存中占用一个8bit位的字节(8个二进制位),在计算机内部字符实际上就是一个8bit 位的数值。

字符在内存中的数值数据称为字节码。

str = "ABCD";

bit = string.byte( str,1 );--我们用string.byte函数取第一个字符的字节码

win.messageBox(bit);-->显示A的字节码65

--实际上在内存中A与65并没有太大的区别

而一个中文字符,通常占两个字节(16个二进制位)

str = "中文字";

size = string.len( str);--我们用string.len取字符串的长度

win.messageBox("字符长度"..size);-->显示6个字符

通常在其他的编程语言中,字符串指一段文本。文本总是以"\0"(字节码等于0)表示结束。

所以字符串也就不可能包括"\0"。这也是普通文本与二进制数据的最大区别。

但是在LAScript中,字符串指的是二进制数据,而不是单纯的文本。允许包括"\0"。

即可以处一普通的文本,也可以处理二进制数据。这在其他编程语言里似乎不可思议。

string库的函数可以分析处理任何二进制数据。

二、基本函数

n = string.len(str)

返回字符串str的长度n,也可以直接写n = #str;

str2 = string.rep(str, n)

返回重复n次字符串s的串;

类似于c++中的lpsz = char[n],在调用WinAPI的时候,我们可以用这个函数分配字符串缓冲区。

chr = string.byte(str, i)

取字符串str的第i个字符的字节码(整数值);

第二个参数可以省略(使用默认值1)。

chr = string.byte('A');

win.messageBox(chr);-->显示65

str = string.char(chr[,...])

参数为0个或多个整数值,将每个整数作为字符的字节码连接成字符串。

例如:

str = string.char(65,66,67);

win.messageBox(str);-->显示ABC

str = string.c(lpsz)

将API函数中的字符串C指针转换为LAScript字符串. lpsz是一个数字值,必须是一个有效的字符串内存指针.

如果您不是精通C语言中的指针,请谨慎使用这个函数,输入错误的指针值程序会立即崩溃。

tab = string.split( str ,",")

拆分字符串str,第二个参数(可指定多个,可使用模式匹配)指定分隔符,

返回一个table数组。

使用table.concat(tab,"分隔符")来合并字符串,这个函数的功能与string.split正好相反。

str2 = string.lower(str)

将字符串str转换为小写

str2 = string.upper(str)

将字符串str团换为大写

str2 = string.reverse(str);

把字符串的所有字符反转变成从后向前排列。

str2 = string.trim(str ," ")

去除字符串首尾指定的字符,用第二个参数指定要去除的字符,

可指定多个,可使用模式匹配,例如用%s表示所有空白字符。

str2 = string.sub(str,i,j)

截取字符串str的从第i个字符到第j个字符之间的字符串。

i和j表示字符串索引,正数从前向后数,负数从后向前数,

1表示第一个字符,-1表示最后一个字符.参数j可以省略(使用默认值-1);

string.sub 是从第i个字符到第j个字符截取字符串。j是指字符串位置而不是指字符串长度

str2 = string.left(str ,n)

从字符串左侧取两个字符,注意一个中文字占两个字节。

你也可以用str2 = string.sub(str,0,n) 实现同样的功能

str2 = string.right(str ,n)

从字符串右侧取两个字符,注意一个中文字占两个字节

你也可以用str2 = string.sub(str,-(n),-1) 实现同样的功能.

注意:

LAScript从不改变现有的字符串,所以不要忘记使用返回值接收被改变的字符串。

str = "abc";

string.right("abc" ,2);--这样的代码没有任何意义,也不会改变str

正确的写法如下:

str = "abc";

str = string.right("abc" ,2);--不要忘记使用返回值接收被改变的字符串

这个规律适合所有截取字符串、改变字符串的函数.

三、格式化字符串

String. format用来格式化字符串(按指定的规则连接字符串或输出其他变量并返回新的字符串) 。

使用方法与C语言的printf函数相同(实际上很多编程语言中都有同样的格式化函数).

String. format(fm,...);

第一个参数用fm表示输出的格式,每个%符号后面是一个格式化表达式,每个格式化表达式按顺序对应后面的参数。

所以用了N个格式化表达式,就必须在后面添加N个参数。

下面是一个简单的例子:

int = 123;

str = "字符串"

--下面的%s对应参数str, %i对应参数int

str = string. format("这是字符串:'%s' 这是数字值%i",str,int);

win.messageBox(str);

--%05i表示格式化为至少五位的数字,不足在前面补0

str = string. format("%05i",int);

win.messageBox(str);

格式化语法详细说明:

格式化表达式:%[零个或多个标志][最小字段宽度][精度][修改符]格式码

注意:[]方括号表示可选参数

1、格式码

代码c

参数数字值(number)

含义参数被裁剪为8位字节码并作为字符进行打印。

代码i,d

参数数字值(number)

含义参数作为一个十进制整数打印。如果给出了精度而且值的位数小于精度位数,前面就用0填充。

代码u,o,x,X

参数数字值(number)

含义参数作为一个无符号数字值打印,u使用十进制,o使用八进制,x或X使用十六进制,两者的区别是x约定使用abcdef,而X约定使用ABCDEF。

代码e,E

参数数字值(number)

含义参数根据指数形式打印。例如,6.023000e23是使用代码e,6.023000E23是使用代码E。小数点后面的位数由精度字段决定,缺省值是6。

相关文档
最新文档