-- 单行注释
[[
这个是
多行字符串
]]
--[[
多行注释
]]
-- 函数
function fact(n)
if n == 0 then
return 1
else
return n * fact(n - 1)
end
end
-- 在空中面板输入一个数
a = io.read("*n")
fact(a)
print(2^) -- 平方
b = 55 -- 全局变量
local bb = b -- 局部变量
print(type(bb)) -- 获取数值类型 为空 nil
print(3 / 2) -- 1.5
print(123 / 10) -- 12
print(123 % 10) -- 23
print(123 ~= 10) -- ~= 不等于
-- x为空选择后面一个赋值
x = x or 8
if not x then x = 9 end
-- 判断不分浮点数和整数
pring(1 == 1.0) -- true
pring(-3 == -3.0) -- true
-- 十六进制 0x
print(0x1A3) -- 十六进制 显示成10进制419
String.format("%a",419) -- 419转换成16进制然后格式化输出
-- math 函数
print(math.pi) -- 圆周率
print(math.sqrt(9)) -- 开方
-- 类型转换
print(math.tointeger(9.0))
print(tonumber(" 6 ")) -- 10进制转换(输出,填入都是10进制)
print(tonumber("100101",2)) -- 2进制转10进制
print(tonumber("fff",16)) -- 16进制转10进制
print(tostring(16)) -- 转字符串
-- [[
math.abs(-15) -- 取绝对值
math.ceil(5.8) -- 向上取整
math.floor(5.6) -- 向下取整
math.modf(15.98) -- 取整 舍弃
math.mod(14, 5) -- 取模运算
math.max(2.71, 100, -98, 23) -- 最大值
math.min(2.71, 100, -98, 23) -- 最小值
math.pow(2, 5) -- 2的5次方
math.rad(180) -- 角度转弧度
math.random(1, 100) -- 获取1-100的随机数
math.randomseed(os.time()) -- 在使用math.random函数之前必须使用此函数设置随机数种子
]]
-- 字符串
b = String.gsub(a,"one","other") -- a字符串中的one替换成other
print(#b) -- 获取字符串b的长度
print("hello" .. 9) -- 连接字符串
print(66 .. 99) -- 6699
-- [[
string.len(s) -- 获取字符长度
string.rep(s,n) -- s重复n次的字符串
string.revers(s) -- 反转字符串
string.lower(s) -- 转小写
string.upper(s) -- 转大写(简写:s:upper())
string.sub(s,2,8) -- 截取指定范围内的字符串(简写:s:sub(2,8))
string.char(97) -- ascii码转字符 a
string.byte("abc") -- 字符转ascii码 97
string.byte("abc",1) -- 字符转ascii码 97
string.byte("abc",2) -- 字符转ascii码 98
string.byte("abc",1,2) -- 字符转ascii码(获取多个返回) 97 98
格式化字符
string.format("x = %d ,y = %d",10,20) -- %d数字占位
string.format("x = %02d ,y = %04d",1,1234) -- %d数字占位 控制每个位置数字数量 x = 01 ,y = 1234
string.format("x = %x",200) -- %x十六进制占位 c8
string.format("x = %f",200) -- %f浮点数占位 200.0
string.format("x = %.4f",math.pi) -- %f浮点数占位,保留4位小数 3.1416
string.find("hello world","wor") -- 查询wor在字符的位置 7 9
string.gsub("hello world","ll","...") -- 替换字符串
string.gsub("hello world ll ll","ll","...",2) -- 替换字符串 最后一个参数是限制替换次数
]]
-- 模式匹配 . 任意字符 %a字母 %c控制符 %d数字 %g空格除外可打印字符
-- %l小写字母 %p标点符号 %s空白符号 %u大写字母 %w字母和数字 %x十六进制数字
-- +(重复一次或多次) *(重复零次或多次) -(重复零次或多次(最小匹配)) ?(出现零次或一次)
-- . % + - & ? [] ^ $ 转义字符 %%=%,%.=.
-- match 返回查找到的字符串
data = "Today is 2020/08/30"
d = string.match(data,"%d+/%d+/%d+")
print(d) -- 2020/08/30
-- gmatch 返回一个函数,可以遍历返回的结果
words = {}
for w in string.gmatch(s, "%a+") do
words[#words + 1] = w
end