3.Lua变量和字符串处理

来源:互联网 发布:红警2尤复简体优化版 编辑:程序博客网 时间:2024/06/05 19:00
用Lua字符要用字符库:
luaopen_string(L)
一。基础只是
1.lua文件 --为注释
2.dofile("111.lua"); --调用另一个脚本
3.直接 a = 10;为全局变量 上面的111.lua脚本可以访问a变量
4.local a =10; --这时a为本地变量,不过建议不要用全局变量,全局变量是不会释放的会一直占用内存,所以尽量使用本地变量
例:main.lua
print("1111111111111111")
a = 10
dofile("111.lua") --执行另外一个脚本
print(a)

例:111.lua
print(a+1)

二。lua基础数据类型
*Nil 空类型(跟c的NULL,不一样的是NULL是为0 而nil 是直接没有):
#用于区分具有一些数据或者没有(nil)数据的值
#全局变量设为nil会交给垃圾回收
&local a = nil
&print(type(a)) -->nil type是判断数据的类型
&nil 可以直接赋给全局变量来进行释放

*boolean 类型
#要注意lua中所有的值都可以作为条件
#除了false和nul为假,其他值都为真,0为真

*Numbers类型
#lua中没有整数,都是用浮点数运算
#对应c的double类型
#新版Lua中有基于64位的整型,旧版不支持64位
#tonumber转换格式 :
比如 将1001转换为number类型:
local b = tonumber("1001");
print("type(b)");
可以看到输出: number
注意只能转化字符串
*string 类型
#tostring转换格式
如:
local a = 123
local b = tostring(a);
print(type(b));
输出为:string
#[[ ]] 多行字符串赋值
如:
local html = [[
<html>
<\html>
]]
输出为<html>
<\html>
#“ 与c一样的转义\" ”
#..字符串拼接
如:
html = "test1" .."test2=" ;
print(html);
输出:输出为test1test2 注意在拼接的时候数据一定不能是nil 否则会出错

*string处理
#字符串长度string.len 计算字符串长度
如:string.len("111");
#取字符串字串string.sub(str,3,5)
取str字符串3-5个(lua字符串从1开始数)
#字符串查找Local b,e = string.find(str,"HEAD")支持正则
如:
local html = [[
<html>
</html>
]]
local b,e = string.find(html,"html");
print("b = "..b .."e="..e);
注意返回有两个值 一个是b 查找到的字符的首地址,e查找到的字符的结束,
没找到都为nil
#字符串替换string.gsub(str,"HEAD","XCJ")支持正则
将str中的HEAD替换成XCJ


c++代码:
// first.cpp : 定义控制台应用程序的入口点。
//
extern "C"
{
#include<lua.h>
#include<lauxlib.h>
#include<lualib.h>
}

int main(int argc, char* argv[])
{
lua_State *L = lua_open();
//打开库
luaopen_base(L);
luaopen_string(L);
if (luaL_loadfile(L, "main.lua"))
{
const char *error = lua_tostring(L, -1); //lua的错误会放到栈顶,lua_tostring是取栈顶
printf("lua load error:%s", error);
return -1;
}
if (lua_pcall(L, 0, 0, 0))
{
const char *error = lua_tostring(L, -1);
printf("lua_pcall error:%s", error);
return -1;
}
getchar();
return 0;
}





原创粉丝点击