加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

lua之string.format用法

发布时间:2020-12-14 21:53:23 所属栏目:大数据 来源:网络整理
导读:虽然lua中字符串拼接“string.format”相对于“..”消耗较大,但有时为了代码的可读性,项目中还是经常用到“string.format”。至于这两个用法的性能看源码也很容易看出来,这里就简单说一下,前者其实调用C函数str_format来实现拼接的,而后者只是一个操作

虽然lua中字符串拼接“string.format”相对于“..”消耗较大,但有时为了代码的可读性,项目中还是经常用到“string.format”。至于这两个用法的性能看源码也很容易看出来,这里就简单说一下,前者其实调用C函数str_format来实现拼接的,而后者只是一个操作符,通过memcpy来拼接,并且多个“..”的操作其实也只执行了一次concat。

常用转义符:

%c - 接受一个数字,并将其转化为ASCII码表中对应的字符

%d,%i - 接受一个数字并将其转化为有符号的整数格式
%o - 接受一个数字并将其转化为八进制数格式
%u - 接受一个数字并将其转化为无符号整数格式
%x - 接受一个数字并将其转化为十六进制数格式,使用小写字母
%X - 接受一个数字并将其转化为十六进制数格式,使用大写字母
%e - 接受一个数字并将其转化为科学记数法格式,使用小写字母e
%E - 接受一个数字并将其转化为科学记数法格式,使用大写字母E
%f - 接受一个数字并将其转化为浮点数格式
%g(%G) - 接受一个数字并将其转化为%e(%E,对应%G)及%f中较短的一种格式
%q - 接受一个字符串并将其转化为可安全被Lua编译器读入的格式
%s - 接受一个字符串并按照给定的参数格式化该字符串


实用扩展:

对于“string.format”的使用,转义符的使用也是有部分技巧。

1)string.format中怎么匹配带%的的字符串和转义符的使用

string.format("%d%%",100)?? 输出:? 100%

string.format(""%s"","Hello World")???输出:?? "Hello World"


2)常用的格式控制符

可以在%号后添加参数. 参数将以如下的顺序读入:

(1) 符号: 一个+号表示其后的数字转义符将让正数显示正号. 负数不变.

(2) 占位符: 一个0,在后面指定了字串宽度时占位用. 默认占位符是空格.

(3) 对齐标识: 在指定了字串宽度时,默认为右对齐,增加-号可以改为左对齐.(用于一些自动空格地方)

(4) 宽度数值 .小数位数/字串裁切: 在宽度数值后增加的小数部分n,若后接f则设定该浮点数的小数只保留n位,若后接s则设定该字符串只显示前n位.


string.format("%05d",2015)???? 输出:? 02015

string.format("%+04d",-2015)?? 输出:? -2015

string.format("%+04d",2015)?? 输出:? +2015

string.format("%.5f",math.pi)?? 输出:? 3.14159

string.format("%.8f",0.123456789)?? 输出:? 0.12345679?(这里可以看到第八位变成了9而不是8,其实是做了一个四舍五入操作)

string.format("%.4s","canglang")?? 输出:? cang

string.format("%8.4s","canglang")?? 输出:????????cang

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读