zoukankan      html  css  js  c++  java
  • lua 基础库

    数学库:

      三角函数:math.sin, math.cos, math.tan, math.asin, math.acos 都以弧度为单位;

      指数和对数函数:exp, log, log10;

      取整函数:math.floor, math.ceil;

      最大最小函数:math.max math.min;

      随机函数:math.randomseed, math.random(无参数返回[0,1),有参数返回[1,n])

      常量:math.pi, math.huge

    table库:

      table.insert(t, v): 在数组末尾插入v;

      table.insert(t, i, v): 在数组指定位置插入v;

      table.remove(t): 从数组末尾删除元素;

      table.remove(t, i): 从数组指定位置删除元素;

      table.sort(t, func): 对数组进行排序,默认使用小于排序。func传入的是两个比较的数组元素,如果希望第一个在第二个之前,返回true,反之返回false;

      table.concat(t, split): 连接数组中的元素,返回一个字符串,split是分隔符;

    字符串库:

      string.upper和string.lower: 大小写转换;

      string.sub(s, i, j): 提取s中从i到j位置的字符,如果索引是负数,那么就从字符串结尾开始倒数,-2代表倒数第二个字符;

      string.char(n): 将一个整数或多个整数转换成字符,并连接它们为一个字符串返回;

      string.byte(str, i, j): 返回str从i到j位置的字符的asc码

      string.format(str, ...): 格式化字符串;

      string.find(str, substr, i): 从i位置开始,在str找到substr的开始位置和结束位置;

      string.match(str, substr, i): 和find类似,只是返回值是找到的子串,主要用于模式匹配;

      string.gsbu(str, substr, newstr, n): 在str中找到所有子串,并用newstr替换,n如果指定就会限制替换次数。返回替换后的字符串和替换次数; 

      string.gmatch(str, substr): 返回一个迭代器函数,可在for in中使用,每次迭代返回一个匹配到的子串;

      

    模式匹配:

      %a: 匹配字母

      %d: 匹配数字

      %l: 小写字母

      %u: 大写字母

      %w:字母和数字

      %s:空白字符

      %p: 标点符号

      %c: 控制字符

      %x: 十六进制

       %b: 匹配配对字符,%b() %b[]等

      +: 匹配1个或多个

      *: 匹配0个或多个,贪婪匹配

      -: 匹配0个或多个,非贪婪匹配

      ?: 匹配0个或1个

      ^: 以某个模式开头进行匹配

      $: 以某个模式结束进行匹配

      []: 自定义匹配字符

    匹配整数:string.find(str, "[+-]?%d+")

    匹配注释:string.find(str, "/%*.-%*/")

      (): 捕获模式匹配中的一部分子串

        local s = "today is "7/10/2012""

        print(string.find(s, "(")(%d+/%d+/%d+)(%1)")) // 10 20 " 7/10/2012 "

    替换:

      string.gsub的第三个参数可以是:

        一个替换字符串;

        一个函数:会在每次找到匹配的时候调用该函数,函数参数是匹配到的子串,返回值是替换字符串,如果返回nil表示不进行替换;

        一个table:会在每次找到匹配的时候,用匹配到的子串作key,在table中寻找value,如果有就替换,没有就不进行替换;

    解析url编码

    function unescape (url)
        url = string.gsub(url, "+", " ")
        url = string.gsub(url, "%%(%x%x)", function (substr)
                print(substr)
                return string.char(tonumber(substr, 16))
            end)
        return url
    end
    
    function escape (url)
        url = string.gsub(url, "[&=+%%%c]", function (c)
                return string.format("%%%02x", string.byte(c))
            end)
        url = string.gsub(url, " ", "+")
        return url
    end
  • 相关阅读:
    数学趣题——数字的全排列
    数学趣题——谁在说谎
    数学趣题——移数字游戏
    数学趣题——魔幻方阵
    数学趣题——亲密数
    数学趣题——数字翻译器
    数学趣题——求圆周率的近似值
    数学趣题——完全数
    Linux:CentOS 7 连接ssh方法
    Linux:CentOS 7 服务器之间ssh无密码登录、传输文件
  • 原文地址:https://www.cnblogs.com/iRidescent-ZONE/p/5651291.html
Copyright © 2011-2022 走看看