所有的转义字符和所对应的意义:
转义字符 |
意义 |
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位十六进制所代表的任意字符 |
二位十六进制 |
字符串操作:
Api |
意义 |
示例 |
string.upper(argument) |
字符串全部转为大写字母 |
无 |
string.lower(argument) |
字符串全部转为小写字母 |
无 |
string.gsub(mainString,findString,replaceString,num) |
在字符串中替换,mainString 为要操作的字符串, findString 为被替换的字符,replaceString 要替换的字符,num 替换次数(可以忽略,则全部替换) |
string.gsub("aaaa","a","z",3);=>zzza 3 |
string.find (str, substr, [init, [end]]) |
在一个指定的目标字符串中搜索指定的内容(第三个参数为索引),返回其具体位置。不存在则返回 nil |
string.find("Hello Lua user", "Lua", 1) =>7 9 |
string.reverse(arg) |
字符串反转 |
string.reverse("Lua")=>auL |
string.format(...) |
返回一个类似printf的格式化字符串 |
string.format("the value is:%d",4)=>the value is:4 |
string.char(arg) 和 string.byte(arg[,int]) |
char 将整型数字转成字符并连接, byte 转换字符为整数值(可以指定某个字符,默认第一个字符) |
string.char(97,98,99,100)=>abcd;string.byte("ABCD",4)=>68;string.byte("ABCD")=>65 |
string.len(arg) |
计算字符串长度 |
string.len("abc")=>3 |
string.rep(string, n) |
返回字符串string的n个拷贝 |
string.rep("abcd",2)=>abcdabcd |
.. |
链接两个字符串 |
print("www.runoob.".."com")=>www.runoob.com |
string.gmatch(str, pattern) |
回一个迭代器函数,每一次调用这个函数,返回一个在字符串 str 找到的下一个符合 pattern 描述的子串。如果参数 pattern 描述的字符串没有找到,迭代函数返回nil |
for word in string.gmatch("Hello Lua user", "%a+") do print(word) end=>Hello,Lua,user |
string.match(str, pattern, init) |
string.match()只寻找源字串str中的第一个配对. 参数init可选, 指定搜寻过程的起点, 默认为1。在成功配对时, 函数将返回配对表达式中的所有捕获结果; 如果没有设置捕获标记, 则返回整个配对字符串. 当没有成功的配对时, 返回nil |
string.match("I have 2 questions for you.", "%d+ %a+")=>2, questions;string.format("%d, %q", string.match("I have 2 questions for you.", "(%d+) (%a+)"))=>2, "questions" |
string.sub(s, i [, j]) |
用于截取字符串,s:要截取的字符串。i:截取开始位置。j:截取结束位置,默认为 -1,最后一个字符 |
local sourcestr = "prefix--runoobgoogletaobao--suffix";string.sub(sourcestr, 4, 15)=>"fix--runoobg";string.sub(sourcestr, -10)=>"ao--suffix"; |
string.byte |
字符与整数相互转换 |
string.byte("Lua")=>76;string.byte("Lua",-1)=>97 |
string.char |
字符与整数相互转换 |
string.char(97)=>a |
Api |
意义 |
%c |
接受一个数字, 并将其转化为ASCII码表中对应的字符 |
%d, %i |
- 接受一个数字并将其转化为有符号的整数格式 |
%o |
接受一个数字并将其转化为八进制数格式 |
%u |
接受一个数字并将其转化为无符号整数格式 |
%x |
接受一个数字并将其转化为十六进制数格式, 使用小写字母 |
%X |
接受一个数字并将其转化为十六进制数格式, 使用大写字母 |
%e |
接受一个数字并将其转化为科学记数法格式, 使用小写字母e |
%E |
接受一个数字并将其转化为科学记数法格式, 使用大写字母E |
%f |
接受一个数字并将其转化为浮点数格式 |
%g(%G) |
接受一个数字并将其转化为%e(%E, 对应%G)及%f中较短的一种格式 |
%q |
接受一个字符串并将其转化为可安全被Lua编译器读入的格式 |
%s |
接受一个字符串并按照给定的参数格式化该字符串 |
为进一步细化格式, 可以在%号后添加参数. 参数将以如下的顺序读入:
(1) 符号: 一个+号表示其后的数字转义符将让正数显示正号. 默认情况下只有负数显示符号.
(2) 占位符: 一个0, 在后面指定了字串宽度时占位用. 不填时的默认占位符是空格.
(3) 对齐标识: 在指定了字串宽度时, 默认为右对齐, 增加-号可以改为左对齐.
(4) 宽度数值
(5) 小数位数/字串裁切: 在宽度数值后增加的小数部分n, 若后接f(浮点数转义符, 如%6.3f)则设定该浮点数的小数只保留n位, 若后接s(字符串转义符, 如%5.3s)则设定该字符串只显示前n位.
string1 = "Lua"
string2 = "Tutorial"
number1 = 10
number2 = 20
string.format("基本格式化 %s %s",string1,string2)=>基本格式化 Lua Tutorial
date = 2; month = 1; year = 2014
string.format("日期格式化 %02d/%02d/%03d", date, month, year)=>日期格式化 02/01/2014
string.format("%.4f",1/3) -- 输出0.3333
string.format("%c", 83) -- 输出S
string.format("%+d", 17.0) -- 输出+17
string.format("%05d", 17) -- 输出00017
string.format("%o", 17) -- 输出21
string.format("%u", 3.14) -- 输出3
string.format("%x", 13) -- 输出d
string.format("%X", 13) -- 输出D
string.format("%e", 1000) -- 输出1.000000e+03
string.format("%E", 1000) -- 输出1.000000E+03
string.format("%6.3f", 13) -- 输出13.000
string.format("%q", "One\nTwo") -- 输出"One
Two
string.format("%s", "monkey") -- 输出monkey
string.format("%10s", "monkey") -- 输出 monkey
string.format("%5.3s", "monkey") -- 输出 mon