## 1.woo常用函数列表【区分系统级函数】 *ps:woo支持部分lua常用函数,woo函数都是下划线开始* ### table扩展函数: table.slice({1,2,3,4,5,6},1,3)={2,3} ### *.)多功能函数 >1._del(del_mode,res,...params) 高级元素删除函数 DEL_MODE: woo.DEL_NORMAL='n' 表示正常的删除逻辑 woo.DEL_FROM='f' 表示从索引处开始删除 woo.DEL_TO='t' 表示删除到索引处 woo.DEL_REPEAT='r' 表示删除重复的元素仅仅保留一次 ``` :C _out(_del(woo.DEL_NORMAL,'12345',5,3,1)) --'24' -- 大索引在前 _out(_del(woo.DEL_NORMAL,{1,2,3,4,5,6,7,8,9,item1=1,item2=2},9,6,2,'item1') ) --{1,3,4,5,7,8,item2=2} _out(_del(woo.DEL_FROM,{1,2,3,4,5,6},3) ) -- {1,2} _out(_del(woo.DEL_FROM,'12345',3) ) -- '12' _out(_del(woo.DEL_TO,'12345',3) ) -- '45' _out(_del(woo.DEL_TO,{1,2,3,4,5,6},3) ) -- {4,5,6} _out(_del(woo.DEL_FROM_tO,'12345',2,3) ) -- '145' _out(_del(woo.DEL_FROM_tO,{1,2,3,4,5,6},2,3) ) -- {1,4,5,6} _out(_del(woo.DEL_REPEAT,'12334455')) --'12345' -- 仅支持字符串 :R ``` >2._sub_ex(del_mode,res,...params) 高级分割,支持数组table SUBEX_MODE: woo.SUBEX_N='n' 表示正常截取 normal woo.SUBEX_NE='ne' 表示正常截取到结尾 normal-end woo.SUBEX_R='r' 表示反转 reverse woo.SUBEX_RE='re' 表示反转 reverse-end ``` :C print('文本测试截取:', _sub_ex('n', '1/2/3/4/5/6', '/')) -- 1 print('文本测试截取:', _sub_ex('ne', '1/2/3/4/5/6', '/')) -- 1/2/3/4/5 print('文本测试截取:', _sub_ex('r', '1/2/3/4/5/6', '/')) -- 6 print('文本测试截取:', _sub_ex('re', '1/2/3/4/5/6', '/')) -- 2/3/4/5/6 print('文本测试截取:', _sub_ex('n', '123456789', 3)) -- 123 print('文本测试截取:', _sub_ex('ne', '123456789', 3)) -- 123456 print('文本测试截取:', _sub_ex('r', '123456789', 3)) -- 789 print('文本测试截取:', _sub_ex('re', '123456789', 3)) -- 456789 :R ``` >3.其他常用函数 ps:下方的表格出问题了,他们的表格有bug,后续会推出woo语言开发的文档网站 | 函数名称 | 参数| 作用 | | --- | --- |--- | |_foreach() | (p1,p2=function(k,v)end) | 循环迭代:</br>p1为数组table时key,val循环迭代到p2函数中</br>p1数值时p2函数将被回调p1次</br>p1为字符串时,p2函数中迭代每个字符| |_chan_put() | (is_parent,val) |保存全局数据,会阻塞当前线程 | |_chan_get() | (is_parent) |获取全局数据,会阻塞当前线程| |_lock() | (key,function()) |线程锁,_lock('lock_key',function() end) ,key为空,则清空所有锁| ## 第一部分: | 函数名称 | 参数| 作用 | | --- | --- |--- | |_log() | _log(...) |打印日志信息到日志文件,http模式可用,log(1,'123',{'12','23'}) | |_home() | | 获取用户home目录一般都是 ~/ | |_cp() | (from , to) | 复制一个文件或文件夹_cp('a.txt','b.txt'),此处致敬linux命令cp | |_rm() | (file_path) | 删除文件,此处致敬linux命令rm | |_sleep() | (mill_second) | 延迟执行,延迟多少毫秒后继续执行 | |_mv() | (from,to) | 移动文件,致敬linux命令mv | |_mkdir() | _mkdir(path) | 新建目录 | |_rand()|_rand(seed=number\|nil)|取随机数,介于0-1之间,seed可以设置种子| | _zip|_zip('zip\|unzip\|view','./folder','a.zip')|压缩/解压缩/查看压缩包内容,支持rar zip tar xz ...| |_out() | (val1,val2,val3,...) | 输出数据到网页(如果是http模式,否则输出到控制台)| |_base64_encode() | | base64加密| |_base64_decode() | | base64解密| |_file_save() | _file_save(path,'this is file content.') | 写到文件| |_cat() | _cat(file_path,is_read_bin) | 致敬linux命令cat,从文件读入,is_read_bin==true表示读入文本,不填 读入字节集| |_md5() | | md5加密 | |_file_md5() | | 文件md5 | |_sha() | (string,256\|512\|nil) | shal 了解的人自然了解,参数#2不传为sha1的值 | |_crc32() | | crc32 了解的人自然了解 | |_file_size() | | 文件尺寸| |_file_name() | | 文件名称 | |_file_exist() | | 文件是否存在 | |_choose() | (true\|int) | 多项选择:_choose(1>2,'123','321')=='321'<br/>_choose(2,'123','321')=='321'| |_time() | | 获取时间戳:_time() | |_date() | | 获取日期:date("Y-m-d H:i:s"),date("Y-m-d H:i:s", strtotime('2019-01-08 13:50:30'))| |_str_time() | | 字符串到时间(此致敬php了) | |_ord() | | assiic 到字符 | |_chr() | |字符到assiic | |_ascii() | | 字符到assiic | |_bytes() | | 字符串到字节集:_str_byte('abc'),结果:{56,57,58} | |_strs() | | 字节集到字符串,_byte({56,57,58})=='abc' | |_char_at() | | 返回字符串某个位置id字符:_char_at('123',2)==2 | |_urlencode() | | url加密| |_urldecode() | | url解密| |_file_sha() | | 文件sha加密:_file_sha('rain.mp3',nil or '128' or '256' or '512')| |_join() | | 字符串拼接 | |_json_encode() | | json编码| |_json_decode() | | json解析| |_str_sub() | | 字符串分割| |_str_split() | | 分割函数,_str_split('1.2.f.123.','.')=={'1','2','f','123',''}| |_str_index() | | 同 _str_pos | |_str_rindex() | | 同 _str_rpos| |_begin_with() | | 是否以某个字符串开始?| |_end_with() | | 是否以某个字符串结尾| |_stack() | | 打印栈| |_str_rev() | | 字符串翻转| |_str_count() | | 字符串个数,建议使用 _len()函数替代| |_rtrim() | | 删除右边字符,默认删除空格,_rtrim('1234','34')=='12', _rtrim('1 ')=='1' | |_ltrim() | | 删除左边字符,默认删除空格,_rtrim('1123','1')=='23', _rtrim(' 1 ')=='1' | |_trim() | | 删除左右两边字符,默认删除空格,_rtrim('23123','1')=='1', _rtrim(' 1 ')=='1' | |_str_upper() | | 到大写 | |_str_lower() | | 到小写| |_str_replace() | | 字符串替换,_str_replace('123123123','2','')=='131313' | |_format() | (str,....) | 格式化字符串print(_format('%s%x','aaa','123'))| ## 第二部分: | 函数名称 | 参数| 作用 | | --- | --- |--- | |_str_repeat() | ('a',n) | 重复字符a,n次| | 函数名称 | 参数| 作用 | |_str_replace_re() | | 字符串正则替换 _str_replace_re('12222.3,322.1','(2*?)\\.','(${1}-)')=='1(2222-)3,(322-)1' | |_re_match() | (str string,rule string) | 正则匹配 | |_readline() | (show_text string,is_password_input bool) | 从命令行标准输入读取一行 | |_exec() | (params={},isAsync=true\|false) | 执行cmd/shell命令:_exec({'cmd','/c','echo 1'},async=true\|false\|function(handler){}) async如果是true表示异步执行,不等待,否则默认同步执行,等待且返回执行结果,如果是函数,则handler可以读写| |_in_array() | | _in_array(0,{0,9,8}) ==true | |_data_put() | (key string,value any) | 设置全局变量| |_data_get() | (key) | 获取全局变量| |_ls() | (folder_dir string ,func function(is_folder,folder_name),not_get_sub_file) | 递归获取目录中所有文件,not_get_sub_file表示是否遍历子文件夹 | |_to() | (num,to,is_any_to_ten) | 10进制到任意进制,如122到64进制:_to(122,64),任意进制到10进制,如122转64再转10进制:_to(_to(122,64),64| |_args() | | 取启动参数:_args()返回数组,里面是woo启动参数例如命令行:```cw 1.lua start ```, 返回table:{start}| |_is_valid() | (...) | 判断参数是由有效(支持多参数:0,false,空字符串,空数组,nil返回false):```_is_valid('a','2',true ,{1}) ```| |_async() | (func,...) | 启动线程 | |_run() | | 开启一个线程来执行脚本,_run('exp.woo','params1','params2)| |_send_mail() | |不做成内置,可以做成扩展包,做好的的同学请联系 | |_yml() | _yml(path) | 解析yaml文件返回数组table , 获取woo启动的默认yaml文件数组,cli模式没有,http 可用 | |_is_cli() | | 是否cli模式运行 | |_env() | | 获取环境变量| |_escape() | | 对字符串去除敏感,常用于mysql等数据库 | |_merge() | | 合并数组table,_merge({ 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }, 10, 11, 12, "13" )| |_len() | | 数组table长度 | |_uuid() | | 获取唯一uuid | |_dir() | (true\|dir\|nil) | 1.参数nil或空 返回woo执行文件目录<br/>2.参数为/user/local 返回/usr<br/>3.参数为true返回woo执行文件目录加文件名<br/>用例:[oshine/6](http://coder.passer.top/code/oshine/6) | |_wget() | (savename,url,opt,callback) | 下载文件<br/>savename保存文件名<br/>url下载地址<br/>opt:参数:{cookie={delPer="10",...},header={key="value",...}}}<br/>callback 回调函数:function(current,total)<br/>例:_wget('r.html','http://www.baidu.com') | |_pwd() | | 获取当前cmd执行路径 | |_os (isGetArch) | (true\|nil) | 获取当前系统,<br/>【isGetArch=nil或空】:widnows,drawin linux,<br/>【isGetArch=true】:linux/amd64,windows/amd64,darwin/amd64,... | |_temp () | | 当前系统缓存目录,linux一般是:/temp | |_copy| | io复制,可以复制具有读写方法的类| >4.特殊函数详解: 颜色文本输出函数:_color() ~~~woo ;;; local str = "hello world" _color('pre', str, 'red') _color('pre', str, 'green') _color('pre', str, 'cyan') _color('pre', str, 'yellow') _color('pre', "font color with back color", 'yellow', 'white') _color('info', "info message") _color('warn', 'warn message') _color('error', 'error message') _color('diy', "<suc>he</><comment>llo</>, <cyan>wel</><red>come</>\n") _color('diy', "<fg=11aa23>he</><bg=120,35,156>llo</>, <fg=167;bg=232>wel</><fg=red>come</>") ;;; ~~~ ![](https://img.kancloud.cn/aa/5f/aa5fc80ad8dc7342b71d8c0e073e6f56_226x221.png)