字符串处理与正则表达式
功能:将cmd中的netstat -n的输出作为原始字符串做整理。 importconsole varf=io.popen("netstat-n") varstr=f.read(-1); //直接输出中文会乱码,所以先转换 str2=string.fromto(str,936,65001) f.close(); io.open();//打开控制台 //io.print(str2);//输出全部结果 varm1=string.match(str2,"s*<aaa>s*<d*pd*pd*pd*pd*>s*<d*pd*pd*pd*pd*>s*u{4,}[D]") varm2=string.match(str2,}pu{2,}[T]") vargetnum=console.getNumber("选择获取一个连接: 1.已建立的连接; 2.主(被)动关闭的连接 ") if(getnum==1){ console.log(string.replace(m1,"u{4,}[D]","已建立")) varm11=string.fromto(m1,65001,936) string.save("C:establish.txt",m11,true) }; else{ console.log(string.replace(m2,"s*u{4,}[T]","已关闭")) varm22=string.fromto(m1,936) string.save("C:finish.txt",m22,true) } console.pause(true) 笔记: 1.字符串可以作为数组取长度。其中都是以字节码纯存储的。所以,a在遍历中表示为97。 2.每个变量都有自己的数据类型。用''引起来的都是字符串,所以num =123 和 num = "123"不同。用type(VAR)可以看到。也可以用type.string来判断。 3.在用“+”算术运算时,编译器会先尝试把内容转变成number类型,再做运算,转换不成就报错。如果只是想把两个值连接起来,就用"++"。总结局势+会把内容作为数字来做,先转换成number,++会直接转换成字符串,然后拼接起来。 4.对与number类型,可以直接输入其他 制的字符,如num=0xFF,0x9这样的,只要前面有0x,就识别成十六进制。明确制定进制的方式也很简单,如二进制用var = 2#10,就把#后面的字符处理成#前面的进制格式。最后,输出的时候,会在屏幕上显示为10进制 只是表示正数,就是无符号数。如果要用到有符号数表示正负数,要在前面增加一个bit,一个int,最大用4个byte来表示,即32个位。小数,或者叫float数,字节数翻翻,用64个位来表示,即16个byte。 5.转意符:“”,在单引号中,可以作为转意符。在双引号中识别为字符串。如str='t'表示位制表符,用str="t"就是输出t。用'n'来表示换行。如果在双引号中,可以直接换行,输入的回车会原样打印。' '代表结束符。解释器读到这个字符后不再向后读取了。 6.unicode字符(编码格式为UTF16,即用16个字节,2个字符来表示一个字符串):用 u 后面跟着4个16进制的数来表示。或,在字符串最后面加一个u:str1='汉字utf16'u,这就代表生成了UTF16的字符串,不加u的时候就是成了一个UTF8的字符串str2="汉字utf8"。把这两个变量在console.log(str1,str2)里输出时,aardio会自动转换编码为控制台所支持的ANSI编码,否则一个是utf8,一个是utf16,就会乱码。 同样的,对utf16的unicode字符做循环遍历时,要#str/2,且字符串下标操作符返回2个字节表示的unicode代码。 7.在字符串中表示双引号,可以使用3种方式:1.用反引号;2用两个""来表示一个";3.把一个注释串赋值给一个字符串变量。 8.读入一个文件的方式: 本质是通过字符串赋值的方式: var str = $"C:Desktop文档.txt"; 这样就可以把这个文档.txt里的内容赋值给str。而且,支持直接拖入。其他的文件,比如图片,也可以用这种方式直接拖入。如: winform.image = $"C:Desktop1,jpg",aardio会把这个图片处理成二进制直接打包。 9.直接下标:用两对中括号:[[]]:用在对字符串for遍历,每次输出一个字符,而不是这个字符对应的编码数。 10.字符串转换:str = string.toUnicode(str,950) 代表把一个big5的编码的str转换成为unicode模式。也可以从unicode转换为其他,例如str = string.fromto(str,第一种码页,第二种码页) 这样就可以把一种码转换成另外一种。 11.字符串截取:string.left(str,3)表示从左边开始取3个字节,如果要取三个字符,要求使用true函数:string.left(str,3,true) 12.字符串不会被修改,常量的内存是不可被修改的,但是可以用string.replace 方法来重新生成一个: str = '字符串' str2 = string.replace(str,"a","d") 13.UTF-8编码是变长编码,小部分汉字以3个字节存储,大部分以4字节存储,但是他的每个字节肯定都是大于十六进制的x80,即x80以上都是多字节。aardio中默认字符串就是UTF8编码。 14.匹配模式只获取第一个匹配到的结果,如果要多次匹配,需使用string.gmatch() 15.对字符串可以通过split来拆分成数组,windows下回车是<rn>: importconsole varstr2=$"C:Usersweiting.hwtDesktop333.txt"; varstr=string.fromto(str2,65001) t=string.split(str,'<rn>'); console.log(#t) console.log(t[1]) console.pause(true) 对输出的结果做分组,使用括号: 例如: importconsole vara,b,c=string.match("abcabcabcabc","(bc)(abc)(ab)") console.log(a,c) console.pause() 这样,就把本来输出的bcabcab分成了bc/abc/ab三个组了 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- c# – 这些对象的实例化方式有何不同?
- 详解vue-cli脚手架build目录中的dev-server.js配置文件
- ALV TABLE 十一:ALV的聚合,排序,过滤
- ruby-on-rails – Rails 3:未定义的方法`remote_form_for’
- [ReactiveCocoa](翻译|巨坑)FrameworkOverview框架概述
- 我该如何解析XML android?
- react 引用 layer (防忘记)
- ruby-on-rails – Sensu Emailer`parse_options’:无效选项
- 使用Flex代码清除ArcGIS Server 10 REST缓存
- 使用CocoaPods管理依赖库