• Lua02 基本语法:字符串+函数+数组


    一、Lua 字符串

    1、定义字符

    单引号、双引号、[[ 与 ]]都可以定义字符串。

    2、转义字符

    转义字符

    意义

    ASCII码值(十进制)

    \a

    响铃(BEL)

    007

    \b

    退格(BS) ,将当前位置移到前一列

    008

    \f

    换页(FF),将当前位置移到下页开头

    012

    \n

    换行(LF) ,将当前位置移到下一行开头

    010

    \r

    回车(CR) ,将当前位置移到本行开头

    013

    \t

    水平制表(HT) (跳到下一个TAB位置)

    009

    \v

    垂直制表(VT)

    011

    \\

    代表一个反斜线字符''\'

    092

    \'

    代表一个单引号(撇号)字符

    039

    \"

    代表一个双引号字符

    034

    \0

    空字符(NULL)

    000

    \ddd

    1到3位八进制数所代表的任意字符

    三位八进制

    \xhh

    1到2位十六进制所代表的任意字符

    二位十六进制

    3、字符串操作

    序号方法 & 用途
    1string.upper(argument):
    字符串全部转为大写字母。
    2string.lower(argument):
    字符串全部转为小写字母。
    3string.gsub(mainString,findString,replaceString,num)

    在字符串中替换。

    mainString 为要操作的字符串, findString 为被替换的字符,replaceString 要替换的字符,num 替换次数(可以忽略,则全部替换),如:
    1. > string.gsub("aaaa","a","z",3);
    2. zzza 3
    4string.find (str, substr, [init, [plain]])

    在一个指定的目标字符串 str 中搜索指定的内容 substr,如果找到了一个匹配的子串,就会返回这个子串的起始索引和结束索引,不存在则返回 nil。

    init 指定了搜索的起始位置,默认为 1,可以一个负数,表示从后往前数的字符个数。

    plain 表示是否以正则表达式匹配。

    以下实例查找字符串 "Lua" 的起始索引和结束索引位置:

    1. > string.find("Hello Lua user", "Lua", 1)
    2. 7    9

    5string.reverse(arg)
    字符串反转
    1. > string.reverse("Lua")
    2. auL

    6string.format(...)
    返回一个类似printf的格式化字符串
    1. > string.format("the value is:%d",4)
    2. the value is:4

    7string.char(arg) 和 string.byte(arg[,int])
    char 将整型数字转成字符并连接, byte 转换字符为整数值(可以指定某个字符,默认第一个字符)。
    1. > string.char(97,98,99,100)
    2. abcd
    3. > string.byte("ABCD",4)
    4. 68
    5. > string.byte("ABCD")
    6. 65
    7. >

    8string.len(arg)
    计算字符串长度。
    1. string.len("abc")
    2. 3

    9string.rep(string, n)
    返回字符串string的n个拷贝
    > string.rep("abcd",2)
    abcdabcd
    10..
    链接两个字符串
    1. > print("aaa.".."bb")
    2. aaa.bb

    11string.gmatch(str, pattern)
    返回一个迭代器函数,每一次调用这个函数,返回一个在字符串 str 找到的下一个符合 pattern 描述的子串。如果参数 pattern 描述的字符串没有找到,迭代函数返回nil。
    1. > for word in string.gmatch("Hello Lua user", "%a+") do print(word) end
    2. Hello
    3. Lua
    4. user

    12string.match(str, pattern, init)
    string.match()只寻找源字串str中的第一个配对. 参数init可选, 指定搜寻过程的起点, 默认为1。 
    在成功配对时, 函数将返回配对表达式中的所有捕获结果; 如果没有设置捕获标记, 则返回整个配对字符串. 当没有成功的配对时, 返回nil。
    1. > = string.match("I have 2 questions for you.", "%d+ %a+")
    2. 2 questions
    3. > = string.format("%d, %q", string.match("I have 2 questions for you.", "(%d+) (%a+)"))
    4. 2, "questions"

     4、字符串截取

    string.sub(s, i [, j])
    • s:要截取的字符串。
    • i:截取开始位置。
    • j:截取结束位置,默认为 -1,最后一个字符。

    5、字符串大小写转化

    1. string1 = "Lua";
    2. print(string.upper(string1))
    3. print(string.lower(string1))

    6、字符串查找与反转

    1. string = "Lua Tutorial"
    2. -- 查找字符串
    3. print(string.find(string,"Tutorial"))
    4. reversedString = string.reverse(string)
    5. print("新字符串为",reversedString)

    二、数组

    1、一维数组

    1. array = {"Lua", "Tutorial"}
    2. for i= 0, 2 do
    3. print(array[i])
    4. end

    在 Lua 索引值是以 1 为起始,但你也可以指定 0 开始,甚至可以为负数。

    2、多维数组

    1. -- 初始化数组
    2. array = {}
    3. for i=1,3 do
    4. array[i] = {}
    5. for j=1,3 do
    6. array[i][j] = i*j
    7. end
    8. end
    9. -- 访问数组
    10. for i=1,3 do
    11. for j=1,3 do
    12. print(array[i][j])
    13. end
    14. end

    三、函数

    1. optional_function_scope function function_name( argument1, argument2, argument3..., argumentn)
    2. function_body
    3. return result_params_comma_separated
    4. end
    • optional_function_scope: 该参数是可选的制定函数是全局函数还是局部函数,未设置该参数默认为全局函数,如果你需要设置函数为局部函数需要使用关键字 local

    • function_name: 指定函数名称。

    • argument1, argument2, argument3..., argumentn: 函数参数,多个参数以逗号隔开,函数也可以不带参数。

    • function_body: 函数体,函数中需要执行的代码语句块。

    • result_params_comma_separated: 函数返回值,Lua语言函数可以返回多个值,每个值以逗号隔开。

    1. --[[ 函数返回两个值的最大值 --]]
    2. function max(num1, num2)
    3. if (num1 > num2) then
    4. result = num1;
    5. else
    6. result = num2;
    7. end
    8. return result;
    9. end
    10. -- 调用函数
    11. print("两值比较最大值为 ",max(10,4))
    12. print("两值比较最大值为 ",max(5,6))

     

  • 相关阅读:
    如何添加判断账号为手机号且为11位数;密码且为6位数;且有姓名;和选择男女;和上传图片(如有错误请指点)
    创建IDEA模板
    上犹县寺下镇泥坑村 国稻种芯·中国水稻节:江西赣州稻种尽收
    老杨说运维 | 想转型的请注意!这几点不容忽视
    97 spring 中的泛型类型注入
    HTTP网络协议讲解
    unity 曲线可视化图表制作
    gopher成长之路(五): 2年前和2年后同一个项目
    DHorse v1.4.2 发布,基于 k8s 的发布平台
    Sulfo CY3-DBCO蛋白质标记实验-星戈瑞
  • 原文地址:https://blog.csdn.net/lidongliangzhicai/article/details/125616922