L3-05. string.format
1. string.format(字符串格式 ,...): 第一个参数为字符串格式,后面的参数可以任意多个,用于填充第一个参数中的格式控制符,最后返回完整的格式化后的字符串。
2. 转义码中添加参数的顺序为:%[标志][最小宽度][.精度][类型长度]类型。
3. 使用 string.format() 输出 % 需要用 %%
--[[string.format()函数的格式顺序: %[标志][输出最小宽度][.精度][长度]类型 %a 浮点数、十六进制数字和p-计数法(C99) %A 浮点数、十六进制数字和p-计数法(C99) %c 输出单个字符 %d 以十进制形式输出带符号整数(正数不输出符号) %e 以指数形式输出单、双精度实数 %E 以指数形式输出单、双精度实数 %f 以小数形式输出单、双精度实数 %g 以%f%e中较短的输出宽度输出单、双精度实数,%e格式在指数小于-4或者大 于等于精度时使用 %G 以%f%e中较短的输出宽度输出单、双精度实数,%e格式在指数小于-4或者大于等于精度时使用 %i 有符号十进制整数(与%d相同) %o 以八进制形式输出无符号整数(不输出前缀O) %p 指针 %s 输出字符串 %x 以十六进制形式输出无符号整数(不输出前缀OX) %X 以十六进制形式输出无符号整数(不输出前缀OX) %u 以十进制形式输出无符号整数 标志字符为-、+、#、空格和0五种 -: 左对齐,省略默认为右对齐,例如 "%8d",3 效果: | 3|(对部分类型有效) +: 输出符号(正号或负号)正数前加"+",负数保持原样(对数值类型有效) #: 对c,s,d,u类无影响;对o类,在输出时加前缀0;对x类, 在输出时加前缀0x或者0X;对g,G 类防止尾随0被删除; 对于所有的浮点形式,#保证了即使不跟任何数字,也打印一个小数点字符 空格: 输出值为正数前加" "空格,为负时保持原样(对数值类型有效) 0: --]] --常用的字符串格式类型符: --接收一个Ascll码并转为字符%c print(string.format("%c",65)) --输出结果: A print(string.format("%c,%c,%c",65,66,67)) --输出结果: A B C print(string.format("%c%c%c",228,185,166)) --输出结果: 书 print(string.format("%-8c",65)) --输出结果: |A | print(string.format("%8c",65)) --输出结果: | A| print(string.format("%-8c",65)) --输出结果: |A | --接收一个十进制带符合整数%d print(string.format("%d",20)) --输出结果: 20 print(string.format("%.3d",20)) --输出结果: 020 --.3在这里起到的是补0的作用 print(string.format("%4.3d",20)) --输出结果: | 020| print(string.format("%+5.3d",20)) --输出结果: | +020| print(string.format("%+5.3d",-20)) --输出结果: | -020| --接收一个浮点数%f --默认整体是8位,不足在小数点后补0 print(string.format("%f",5)) --输出结果: 5.000000 --不保留小数则会返回一个整数 print(string.format("%.0f",5)) --输出结果: 5 --结合上一行的内容,加入#号是为了在不保留小数的情况下保留一个小数点 print(string.format("%#.0f",5)) --输出结果: 5. --接收一个字符串%s print(string.format("%s","你\n我\n他")) --[[输出结果: 你 我 他]] --中文占3个字节 print(string.format("%.3s","你我他")) --输出结果: 你 --接收一个字符串使其带上双引号%q print(string.format("%q","你\n我\n他")) --[[输出结果: "你\ 我\ 他"]] --接收一个%f和%e输出宽度较短的数值 --#号是如果带有0则不删除尾号的0,如果不带则保留小数点 print(string.format("%#05.2g",68)) --输出结果: 068. print(string.format("%#05.3g",68)) --输出结果: 068.0
4. 实战应用
x = 10 string.format("x = %d, y = %d", x, 20) -- 将x使用十六进制打印 print( string.format("x = %#X", x) ) -- 在前面加上修饰符 string.format("x = %#x", x) -- 将x以浮点数的格式打印 print( string.format("x = %+5.1f",-500.0001) ) -- 打印字符串 tag, title = "hi", "a tile" print( string.format("<%s>%s</%s>", tag, title, tag) ) function 清除缓存(要清除的包名) exec(string.format("pm clear %s",要清除的包名)) --清除缓存 end function 默认浏览器打开网页(url) exec(string.format("am start -a android.intent.action.VIEW -d %s", url)) end
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了