http://xiaojunwei1987.blog.163.com/blog/static/9291264920112106513465/

string.format用来格式化字符串(按指定的规则连接字符串或输出其他变量并返回新的字符串) 。

string.format(fm,...);

第一个参数用fm表示输出的格式,每个%符号后面是一个格式化表达式,每个格式化表达式按顺序对应后面的参数。

所以用了N个格式化表达式,就必须在后面添加N个参数。

下面是一个简单的例子:

int = 123;

str = "字符串"

--下面的%s对应参数str, %i对应参数int

str = string.format("这是字符串:'%s' 这是数字值 %i",str,int);

win.messageBox(str);

--%05i表示格式化为至少五位的数字,不足在前面补0

str = string.format("%05i",int);

win.messageBox(str);

格式化表达式:%[零个或多个标志][最小字段宽度][精度][修改符]格式码

注意:[]方括号表示可选参数

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类型的转换时,精度指定将被转换的最多的字符数。

如果用于表示字段宽度和/或精度的十进制整数由一个星号代替,那么printf的下一个参数(必须是个整数)就提供宽度和(或)精度。因此,

这些值可以通过计算获得而不必预先指定。

5、示例

格式代码 A ABC ABCDEFGH

%s A ABC ABCDEFGH

%5s ####A ##ABC ABCDEFGH

%.5s A ABC ABCDE

%5.5s ####A ##ABC ABCDE

%-5s A#### ABC## ABCDEFGH

格式代码 1 -12 12345 123456789

%d 1 -12 12345 123456789

%6d #####1 ###-12 #12345 123456789

%.4d 0001 -0012 12345 123456789

%6.4d ##0001 #-0012 #12345 123456789

%-4d 1#### -12# 12345 123456789

%04d 0001 -012 12345 123456789

%+d +1 -12 +12345 +123456789

格式代码 1 .01 .00012345 12345.6789

%f 1.000000 0.010000 0.000123 12345.678900

%10.2d ######1.00 #####0.01 ######0.00 ##12345.67

%e 1.000000e+00 1.000000e-02 1.234500e-04 1.234568e+04

%.4e 1.0000e+00 1.0000e-02 1.2345e-04 1.2346e+04

%g 1 0.01 0.00012345 12345.7

格式代码 6.023e23

%f 60229999999999975882752.000000

%10.2e 60229999999999975882752.00

%e 6.023000e+23

%.4e 6.0230e+23

%g 6.023e+23

用上面的格式化函数可以轻松实现数字的进制转换

--数字转换为二进制字符串

str = string.format("%b",23 );

--二进制字符串转换为数字

n = tonumber(str,2)

--数字转换为八进制字符串

str = string.format("%o",23 );

--八进制字符串转换为数字

n = tonumber(str,8)

--数字转换为十六进制字符串

str = string.format("%x",23 );

--十六进制字符串转换为数字

n = tonumber(str,16)

四、格式化时间

模拟精灵v7.10 格式化时间的函数有 string.time;string.ftime;os.data;os.time 等函数。

os.time 是从table生成数字时间值 string.time是从字符串生成数字时间值。

os.data 与string.ftime功能相同从时间值反过来生成字符串或时间。

这里我们介绍string.time函数、string.ftime函数,下面是使用示例:

--从字符串创建时间值

t = string.time("2006/6/6 0:0:0","%Y/%m/%d %H:%M:%S")

--从时间值创建字符串

str = string.ftime("%Y/%m/%d %H:%M:%S",t )

格式化语法(在很多编程语言中都适用的语法)

%a - 当前区域星期几的简写 %A - 当前区域星期几的全称 %b - 当前区域月份的简写 %B - 当前区域月份的全称 %c - 当前区域首选的日期时间表达 %C - 世纪值(年份除以 100 后取整,范围从 00 到 99) %d - 月份中的第几天,十进制数字(范围从 01 到 31) %D - 和 %m/%d/%y 一样 %e - 月份中的第几天,十进制数字,一位的数字前会加上一个空格(范围从 ' 1' 到 '31') %g - 和 %G 一样,但是没有世纪 %G - 4 位数的年份,符合 ISO 星期数(参见 %V)。和 %V 的格式和值一样,只除了如果 ISO 星期数属于前一年或者后一年,则使用那一年。 %h - 和 %b 一样 %H - 24 小时制的十进制小时数(范围从 00 到 23) %I - 12 小时制的十进制小时数(范围从 00 到 12) %j - 年份中的第几天,十进制数(范围从 001 到 366) %m - 十进制月份(范围从 01 到 12) %M - 十进制分钟数 %n - 换行符 %p - 根据给定的时间值为 `am' 或 `pm',或者当前区域设置中的相应字符串 %r - 用 a.m. 和 p.m. 符号的时间 %R - 24 小时符号的时间 %S - 十进制秒数 %t - 制表符 %T - 当前时间,和 %H:%M:%S 一样 %u - 星期几的十进制数表达 [1,7],1 表示星期一 %U - 本年的第几周,从第一周的第一个星期天作为第一天开始 %V - 本年第几周的 ISO 8601:1988 格式,范围从 01 到 53,第 1 周是本年第一个至少还有 4 天的星期,星期一作为每周的第一天。(用 %G 或者 %g 作为指定时间戳相应周数的年份组成。) %W - 本年的第几周数,从第一周的第一个星期一作为第一天开始 %w - 星期中的第几天,星期天为 0 %x - 当前区域首选的时间表示法,不包括时间 %X - 当前区域首选的时间表示法,不包括日期 %y - 没有世纪数的十进制年份(范围从 00 到 99) %Y - 包括世纪数的十进制年份 %Z - 时区名或缩写 %% - 文字上的 `%' 字符

java stringformat用法_string.format的用法 (java)相关推荐

  1. java url 格式化_String.format()的使用:Java字符串格式化

    今天技术之家陪你一起了解Java开发:String.format()的使用:Java字符串格式化 1 问题背景 当我们在开发中需要格式化时或者当一字符串中有某一部分是需要变化时,我们应该如何快速的进行 ...

  2. java字符串 大括号_string.format格式化字符串中转义大括号“{}”

    今天,用Java读取配置文件占位符,使用String.Format(string format,object arg0)方法.以前只知"{0}"为索引占位符(即格式项),与参数列表 ...

  3. java drawstring字体大小,JAVA中,drawstring 方法的用法,格式是什么啊

    啦啦啦额68的回答 Java中Graphics类的drawString()方法: i)drawString(String str,int x,int y): String str是可以在屏幕上显示的字 ...

  4. java中attribute用法_Java FieldPosition getFieldAttribute()用法及代码示例

    java.text.FieldPosition类的getFieldAttribute()方法用于获取Format.field形式的字段标识符. 用法: public Format.Field getF ...

  5. java treemap用法_Java TreeMap put()用法及代码示例

    TreeMap的java.util.TreeMap.put()方法用于将映射插入Map.这意味着我们可以将特定的键及其映射到的值插入到特定的映射中.如果传递了现有键,则以前的值将被新值替换.如果传递了 ...

  6. Java的几种常见接口用法

    2019独角兽企业重金招聘Python工程师标准>>> Java的几种常见接口用法 今天在看阎宏的< Java与模式>,里面对 java的 几种 接口的常用方法的总结: ...

  7. java实现stack search_Java Stack search()用法及代码示例

    Java中的java.util.Stack.search(Object element)方法用于搜索堆栈中的元素并获取其与顶部的距离.此方法从1开始而不是从0开始计数位置.位于堆栈顶部的元素被视为在位 ...

  8. Java正则表达式--Matcher.group函数的用法

    https://www.cnblogs.com/jiafuwei/p/6080984.html Java正则表达式--Matcher.group函数的用法 原来,group是针对()来说的,group ...

  9. 【Java学习笔记之二十九】Java中的equals和==的用法及区别

    Java中的"equals"和"=="的用法及区别 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String(&quo ...

最新文章

  1. 提供一个基于.NET的加密/解密算法
  2. 一文详解AI模型部署及工业落地方式
  3. 【问题】14500充电锂电池电量问题及测试方案
  4. matlab匿名函数求导,Matlab中的匿名函数的使用
  5. 训练时loss:0.000e+00_其他品牌还在找不到00后营销方向盘时,小度智能音箱发车了…....
  6. 你知道source map如何帮你定位源码么?
  7. NHibernate教程(5)--CRUD操作
  8. 树莓派摄像头——图像 视频采集
  9. 传统蓝牙BR/EDR的搜索Inquiry
  10. Python 实现用GUI设计有界面的词云生成器
  11. IOS:IOS集成开发和环境的介绍
  12. Microsoft KMS Client Setup Keys ( Windows + Office )
  13. “海外传播官”阿乐:让20万外国粉丝通过我“在中国生活”
  14. 爬虫大作业_爬取三星Galaxy_S9论坛
  15. TPG和RCN收购Wave 打造美国No. 6有线运营商
  16. multi-angle cosine and sines
  17. 使用Excle做数据分析与时间序列季节指数预测
  18. matlab 理想低通滤波器函数,基于MATLAB的理想低通滤波器的设计
  19. 为什么要阅读——兼分享《首先,打破一切常规》[中译文]:世界顶级管理者的成功秘诀/(美)马库斯·白金汉,(美)柯特·科夫曼 著
  20. 快速批量修改文件名字

热门文章

  1. Word使用技巧记录
  2. 2010国庆节祝福短信大全,爱情篇
  3. 宾馆房间 hotelroom
  4. 如何使用AnyMP4 Mac Blu-ray Player蓝光播放器?
  5. matlab刷新网页,[求助]如何刷新数据
  6. ALV (三)、 Function ALV (工具栏和事件)
  7. 英雄联盟 for linux,Linux Wine LOL(League of Legends)
  8. pps linux版 x64,64位Ubuntu 12.10成功安装PPS网络电视(PPStream)
  9. java高级流低级流定义_java中哪些是低级流?哪些是高级流?
  10. 关于vue使用baidu-map根据经纬度定位还是存在偏移的问题