格式化字符串%[parameter][flags][field width][.precision][length]type讲解 |
您所在的位置:网站首页 › 格式化字符串用法 › 格式化字符串%[parameter][flags][field width][.precision][length]type讲解 |
格式化语法
格式化表达式: %[零个或多个标志][最小字段宽度][精度][修改符]格式码
注意:[]方括号表示可选参数1、格式码 代码 c 参数 数字值(number) 含义 参数被裁剪为8位字节码并作为字符进行打印。 代码 i,d 参数 数字值(number) 含义 参数作为一个十进制整数打印。如果给出了精度而且值的位数小于精度位数,前面就用0填充。 代码 u,o,x,X 参数 数字值(number) 含义 参数作为一个无符号数字值打印,u使用十进制,o使用八进制,x或X使用十六进制,两者的区别是x约定使用abcdef,而X约定使用ABCDEF。 代码 e,E 参数 数字值(number) 含义 参数根据指数形式打印。例如,6.023000e23是使用代码e,6.023000E23是使用代码E。小数点后面的位数由精度字段决定,缺省值是6。 代码 f 参数 数字值(number) 含义 参数按照的常规浮点格式打印。精度字段决定小数点后面的位数,缺省值是6。 代码 g,G 参数 数字值(number) 含义 参数以%f或%e(如G则%E)的格式打印,取决于它的值。如果指数大于等于-4但小于精度字段就使用%f格式,否则使用指数格式。 代码 s 参数 字符串值(string) 含义 打印一个字符串。 代码 q 参数 (无) 含义 打印一个字符串,并将字符串置于一对引号中,如果字符串中包含引号换行等自动添加转义符。如果要读取一个字符串传为代码。为避免用户恶意注入引号等特殊字符,可以使用%q进行格式化。 代码 % 参数 (无) 含义 取消%转义打印一个%字符,即用%%表示本来的%。 2、 标志 标志 - 含义 值在字段中做对齐,缺省情况下是右对齐。 标志 0 含义 当数值为右对齐时,缺省情况下是使用空格填充值左边未使用的列。这个标志表示用零填充,它可用于d,i,u,o,x,X,e,E,f,g和G代码。 使用d,i,u,o,x和X代码时,如果给出了精度字段,零标志就被忽略。如果格式代码中出现了负号,零标志也没有效果。 标志 + 含义 当用于一个格式化某个有符号值代码时,如果值非负,正号标志就会给它加上一个正号。如果该值为负,就像往常一样显示一个负号。在 缺省情况下,正号并不会显示。 标志 空格 含义 只用于转换有符号值的代码。当值非负时,这个标志把一个空格添加到它开始的位置。注意这个标志和正号标志是相互排斥的,如果两个 同时给出,空格标志便被忽略。 标志 # 含义 选择某些代码的另一种转换形式: 用于... #标志... o 保证产生的值以一个零开头 x,X 在非零值前面加0x前缀(%X则为0X) e,E,f 确保结果始终包含一个小数点,即使它后面没有数字 g,G 和上面的e,E和f代码相同。另外,缀尾的0并不从小数中去除 3、 字段宽度 字段宽度是一个十进制整数,用于指定将出现在结果中的最小字符数。如果值的字符数少于字段宽度,就对它进行填充以增加长度。4、 精度 精度以一个句点开头,后面跟一个可选的十进制数。如果未给出整数,精度的缺省值为零。 对于d,i,u,o,x和X类型的转换,精度字段指定将出现在结果中的最小的数字个数并覆盖零标志。如果转换后的值的位数小于宽度,就在它的前面插入零。如果值为零且精度也为零,则转换结果就不会产生数字。 对于e,E和f类型的转换,精度决定将出现在小数点之后的数字位数。 对于g和G类型的转换,它指定将出现在结果中的最大有效位数。 当使用s类型的转换时,精度指定将被转换的最多的字符数。 如果用于表示字段宽度和/或精度的十进制整数由一个星号代替,那么string.format的下一个参数(必须是个整数)就提供宽度和(或)精度。因此, 这些值可以通过计算获得而不必预先指定。 5、格式语法示例 格式代码AABCABCDEFGH%sAABCABCDEFGH%5s ####A##ABCABCDEFGH%.5sAABCABCDE%5.5s####A##ABCABCDE%-5sA####ABC##ABCDEFGH 格式代码1-1212345123456789%d1-1212345123456789%6d#####1###-12#12345123456789%.4d0001-001212345123456789%6.4d##0001#-0012#12345123456789%-4d1####-12#12345123456789%04d0001-01212345123456789%+d+1-12+12345+123456789 格式代码1.01.0001234512345.6789%f1.0000000.0100000.00012312345.678900%10.2f######1.00#####0.01######0.00##12345.67%e1.000000e+001.000000e-021.234500e-041.234568e+04%.4e1.0000e+001.0000e-021.2345e-041.2346e+04%g10.010.0001234512345.7 格式代码6.023e23%f60229999999999975882752.000000%10.2f60229999999999975882752.00%e6.023000e+23%.4e6.0230e+23%g6.023e+23用上面的格式化函数可以轻松实现数字的进制转换( 请参考:数值与进制 ) io.open() //数字转换为二进制字符串 str = string.format("%b",23 ); io.print(str) //二进制字符串转换为数字 n = tonumber(str,2) //数字转换为八进制字符串 str = string.format("%o",23 ); io.print(str) //八进制字符串转换为数字 n = tonumber(str,8) //数字转换为十六进制字符串 str = string.format("%x",23 ); io.print(str) //十六进制字符串转换为数字 n = tonumber(str,16) |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |