LUA脚本精灵STRING.FORMAT()函数的用法
String.format()详解

String.format()详解JDK1.5中,String类新增了一个很有用的静态方法String.format():format(Locale l, String format, Object… args)使用指定的语言环境、格式字符串和参数返回一个格式化字符串。
format(String format, Object… args)使用指定的格式字符串和参数返回一个格式化字符串。
1.对整数进行格式化:%[index$][标识][最小宽度]转换方式。
我们可以看到,格式化字符串由4部分组成,其中%[index$]的含义我们上面已经讲过,[最小宽度]的含义也很好理解,就是最终该整数转化的字符串最少包含多少位数字。
我们来看看剩下2个部分的含义吧:标识:'-' 在最小宽度内左对齐,不可以与“用0填充”同时使用'#' 只适用于8进制和16进制,8进制时在结果前面增加一个0,16进制时在结果前面增加0x'+' 结果总是包括一个符号(一般情况下只适用于10进制,若对象为BigInteger才可以用于8进制和16进制)' ' 正值前加空格,负值前加负号(一般情况下只适用于10进制,若对象为BigInteger 才可以用于8进制和16进制)'0' 结果将用零来填充',' 只适用于10进制,每3位数字之间用“,”分隔'(' 若参数是负数,则结果中不添加负号而是用圆括号把数字括起来(同‘+’具有同样的限制)转换方式:d-十进制 o-八进制 x或X-十六进制上面的说明过于枯燥,我们来看几个具体的例子。
需要特别注意的一点是:大部分标识字符可以同时使用。
System.out.println(String.format("%1$,09d", -3123));System.out.println(String.format("%1$9d", -31)); System.out.println (String.format("%1$-9d", -31)); System.out.println(String.format ("%1$(9d", -31)); System.out.println(String.format("%1$#9x", 5689));//结果为: //-0003,123 // -31 //-31 // (31) // 0x16392.对浮点数进行格式化:%[index$][标识][最少宽度][.精度]转换方式我们可以看到,浮点数的转换多了一个“精度”选项,可以控制小数点后面的位数。
lua string.format用法

lua string.format用法Lua的string.format函数是用于格式化字符串的,它类似于C语言中的printf函数。
它可以将不同的数据类型转换成字符串并进行格式化,然后返回一个新的字符串。
string.format的基本用法如下:```string.format(format, ...)```其中,format为字符串格式化的模板,用于描述格式化字符串的方式;...表示需要格式化的数据,可以是多个参数,每个参数对应一个格式化占位符。
1. 格式化占位符格式化占位符是用于指定要插入数据的位置和格式的。
在string.format中,格式化占位符必须以百分号(%)开头。
常见的占位符包括:- %d 表示要插入的数据是一个整数- %f 表示要插入的数据是一个浮点数- %s 表示要插入的数据是一个字符串- %c 表示要插入的数据是一个字符- %x表示用十六进制表示要插入的数据- %o表示用八进制表示要插入的数据- %% 表示要插入一个百分号 %除了上述的占位符之外,还有其他的占位符,比如%d.%d表示输出浮点数保留小数点后几位;%5s表示输出字符串右对齐,并且总共占5个字符的位置。
格式化字符串就是将不同的数据类型转换成字符串,并格式化输出。
下面是一些常见的格式化字符串的示例。
- 输出整数:```local num = 123print(string.format("整数:%d", num))--[[输出:整数:123--]]```3. 格式化字符串的宽度和精度在格式化字符串中,可以使用宽度和精度来控制输出的格式。
宽度用于指定输出的字段宽度,如果不够宽时会用空格进行填充;精度用于指定浮点数输出的小数位数。
下面是一些示例。
- 控制宽度:4. 多个参数的格式化string.format可以同时对多个参数进行格式化输出,需要在格式化字符串中使用多个占位符,并将多个参数按顺序传递给string.format函数。
string.format用法

JAVA String.format 方法使用介绍1.对整数进行格式化:%[index$][标识][最小宽度]转换方式我们可以看到,格式化字符串由4部分组成,其中%[index$]的含义我们上面已经讲过,[最小宽度]的含义也很好理解,就是最终该整数转化的字符串最少包含多少位数字。
我们来看看剩下2个部分的含义吧:标识:'-' 在最小宽度内左对齐,不可以与“用0填充”同时使用'#' 只适用于8进制和16进制,8进制时在结果前面增加一个0,16进制时在结果前面增加0x'+' 结果总是包括一个符号(一般情况下只适用于10进制,若对象为BigInteger才可以用于8进制和16进制)' ' 正值前加空格,负值前加负号(一般情况下只适用于10进制,若对象为BigInteger才可以用于8进制和16进制)'0' 结果将用零来填充',' 只适用于10进制,每3位数字之间用“,”分隔'(' 若参数是负数,则结果中不添加负号而是用圆括号把数字括起来(同…+‟具有同样的限制)转换方式:d-十进制 o-八进制 x或X-十六进制上面的说明过于枯燥,我们来看几个具体的例子。
需要特别注意的一点是:大部分标识字符可以同时使用。
System.out.println(String.format("%1$,09d", -3123));System.out.println(String.format("%1$9d", -31));System.out.println(String.format("%1$-9d", -31));System.out.println(String.format("%1$(9d", -31));System.out.println(String.format("%1$#9x", 5689));//结果为://-0003,123// -31//-31// (31)// 0x16392.对浮点数进行格式化:%[index$][标识][最少宽度][.精度]转换方式我们可以看到,浮点数的转换多了一个“精度”选项,可以控制小数点后面的位数。
JAVA字符串格式化-Stringformat()的使用.

JAVA字符串格式化-String.format()的使用常规类型的格式化String类的format()方法用于创建格式化的字符串以及连接多个字符串对象。
熟悉C语言的同学应该记得C语言的sprintf()方法,两者有类似之处。
format()方法有两种重载形式。
format(String format, Object... args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。
format(Locale locale, String format, Object... args) 使用指定的语言环境,制定字符串格式和参数生成格式化的字符串。
显示不同转换符实现不同数据类型到字符串的转换,如图所示。
转换符说明示例%s 字符串类型"mingrisoft" %c 字符类型'm'%b 布尔类型true%d 整数类型(十进制)99%x 整数类型(十六进制)FF%o 整数类型(八进制)77%f 浮点类型99.99%a 十六进制浮点类型FF.35AE%e 指数类型9.38e+5%g 通用浮点类型(f和e类型中较短的)%h 散列码%% 百分比类型%%n 换行符%tx 日期与时间类型(x代表不同的日期与时间转换符测试用例[java]view plaincopy1.public static void main(String[] args) {2. String str=null;3. str=String.format("Hi,%s", "王力");4. System.out.println(str);5. str=String.format("Hi,%s:%s.%s", "王南","王力","王张");6. System.out.println(str);7. System.out.printf("字母a的大写是:%c %n", 'A');8. System.out.printf("3>7的结果是:%b %n", 3>7);9. System.out.printf("100的一半是:%d %n", 100/2);10. System.out.printf("100的16进制数是:%x %n", 100);11. System.out.printf("100的8进制数是:%o %n", 100);12. System.out.printf("50元的书打8.5折扣是:%f 元%n", 50*0.85);13. System.out.printf("上面价格的16进制数是:%a %n", 50*0.85);14. System.out.printf("上面价格的指数表示:%e %n", 50*0.85);15. System.out.printf("上面价格的指数和浮点数结果的长度较短的是:%g %n", 50*0.85);16. System.out.printf("上面的折扣是%d%% %n", 85);17. System.out.printf("字母A的散列码是:%h %n", 'A');18.}输出结果[plain]view plaincopy1.Hi,王力2.Hi,王南:王力.王张3.字母a的大写是:A4.3>7的结果是:false5.100的一半是:506.100的16进制数是:647.100的8进制数是:1448.50元的书打8.5折扣是:42.500000 元9.上面价格的16进制数是:0x1.54p510.上面价格的指数表示:4.250000e+0111.上面价格的指数和浮点数结果的长度较短的是:42.500012.上面的折扣是85%13.字母A的散列码是:41搭配转换符的标志,如图所示。
lua string.format的用法

local pi = 3.14159 local formattedNumber = string.format("Pi is approximately %.2f.", pi) print(formattedNumber) -- 输出:Pi is approximately 3.14.
local char = "A" local formattedChar = string.format("The first letter of the alphabet is %c.", char) print(formattedChar) -- 输出:The first letter of the alphabet is A.
可以根据具体的需求使用不同的占位符和格式选项来进行字符串的格式化。详细 的格式化选项可以参考 Lua 官方文档中的字符串格式化部分。
Lua 中的 string.format 函数用于格式化字符串。它接受一个格式化字符串作为第 一个参数,后跟零个或多个要替换的值,并返回格式化后的字符串。
格式化字符串中可以包含占位符,用来指定要替换的值的位置和格式。以下是一 些常用的占位符:
•
%s:用于替换字符串。
•
%d:用于替换整数。
•
%f:用于替换浮点数。
local percentage = 0.75 local formattedPercentage = string.format("The percentage is %.2f%%.", percentage * 100) print(formattedPercentage) -- 输出:The percentage is 75.00%.
String.format()的用法

String.format()的用法1、格式化货币(跟系统的环境有关,中文系统默认格式化人民币,英文系统格式化美元)string.Format(”{0:C}”,0.2) 结果为:¥0.20 (英文操作系统结果:$0.20)默认格式化小数点后面保留两位小数,如果需要保留一位或者更多,可以指定位数string.Format(”{0:C1}”,23.15) 结果为:¥23.2 (截取会自动四舍五入)格式化多个Object实例string.Format(”市场价:{0:C},优惠价{1:C}”,23.15,19.82)2、格式化十进制的数字(格式化成固定的位数,位数不能少于未格式化前,只支持整形)string.Format(”{0:D3}”,23) 结果为:023string.Format(”{0:D2}”,1223) 结果为:1223,(精度说明符指示结果字符串中所需的最少数字个数。
)3、用分号隔开的数字,并指定小数点后的位数string.Format(”{0:N}”, 14200) 结果为:14,200.00 (默认为小数点后面两位)string.Format(”{0:N3}”, 14200.2458) 结果为:14,200.246 (自动四舍五入)4、格式化百分比string.Format(”{0:P}”, 0.24583) 结果为:24.58% (默认保留百分的两位小数)string.Format(”{0:P1}”, 0.24583) 结果为:24.6% (自动四舍五入)5、零占位符和数字占位符string.Format(”{0:0000.00}”, 12394.039) 结果为:12394.04string.Format(”{0:0000.00}”, 194.039) 结果为:0194.04string.Format(”{0:###.##}”, 12394.039) 结果为:12394.04string.Format(”{0:####.#}”, 194.039) 结果为:194下面的这段说明比较难理解,多测试一下实际的应用就可以明白了。
lua脚本精灵stringformat()函数的用法.

string.format()函数的用法lua中有很多字符串操作的函数,string.format()就是其中的一个,顾名思义,format是格式化的意思,则string.format()功能就是格式化一个字符串。
我们知道lua中可以用".."连接字符串,可以起到一部分格式化字符串的作用,但是如果字符串较长或者有特殊的格式转换操作(如十六进制转换),用".."就会很繁琐且可读性差。
用string.format()就是一个很好的解决方案。
函数定义string.format() 第一个参数为字符串格式,后面的参数可以任意多个,用于填充第一个参数中的格式控制符,最后返回完整的格式化后的字符串。
格式控制符以%开头,常用的有以下几种%s - 接受一个字符串并按照给定的参数格式化该字符串%d - 接受一个数字并将其转化为有符号的整数格式%f - 接受一个数字并将其转化为浮点数格式(小数),默认保留6位小数,不足位用0填充%x - 接受一个数字并将其转化为小写的十六进制格式%X - 接受一个数字并将其转化为大写的十六进制格式示例:1.str = string.format("字符串:%s\n整数:%d\n小数:%f\n十六进制数:%X","qweqwe",1,0.13,348)2.print(str)输出结果:1.字符串:qweqwe2.整数:13.小数:0.1300004.十六进制数:15C5.%X的特殊用法%08X 中间的第2个数字格式化成多少位,第1个数字表示不足位数时的填充数,通常用0填充。
例如:1.str = string.format("0x%08X",348)2.print(str)前面的0x只是个普通的字符串,可有可无,因为我们一般在十六进制数前面加上0x来表明这是一个十六进制数,所以这里才加了个0x,没有其他特殊意义。
string.Format格式化字符串

string.Format格式化字符串今天在做项⽬时,碰到⼀个很奇怪的问题,我使⽤string.Format居然报“输⼊的字符串格式有误”的错误,我调了很久,还是不对,不明⽩错在哪⾥,后来还是google了⼀下,原来我在字符串中出现了"{"字符。
⽽"{"字符若出现在string.Format中是必需转义的,也就是要⽤两个" {{"代表⼀个"{",同时双下⾯把我查找到的解决⽅法的相关⽂章⼀同粘贴出来。
⼀、转义C# 中使⽤类似 {0}, {1:yyyy-MM-dd} 这样的格式占位符,如果被本⾝包含 { 或者 } 怎么办呢?答案是:⽤两个 { 或者 }连写表⽰单个。
例如string str1 = String.Format("{{Hello}}, {0}, Now is {{{1:yyyy-MM-dd HH:mm:ss}}}","Jinglecat",DateTime.Now); // {Hello}, Jinglecat, Now is {2007-07-18 23:06:35}string str2 = String.Format("{Hello}, {0}, Now is {{1:yyyy-MM-dd HH:mm:ss}}","Jinglecat",DateTime.Now); // --> System.FormatException: 输⼊字符串的格式不正确。
事实上,很多情况下带特殊含义的字符都是这样的:如,C# 中,当字符串常量带 @ 前导的时候,⽤两个 " 连写表⽰⼀个 " (半⾓双引号)string str3 = @"My UserName is ""Jinglecat""."; // My UserName is "Jinglecat".//string str4 = @"My UserName's "Jinglecat""; // error CS1002: 应输⼊ ;//string str5 = @"My UserName's \"Jinglecat\""; // error CS1002: 应输⼊ ;SQL 字符串常量,⽤两个 ' 连写表⽰⼀个 ' (半⾓单引号)DECLARE@str6varchar(100)SET@str6 = 'My UserName is ''Jinglecat''.'PRINT@str6-- My UserName is 'Jinglecat'.正则表达式中⽤,两个 $ 连写表⽰⼀个 $ (dollar)⼆、String Formatting in C#基本内容是:可以在 Console.WriteLine(以及 String.Format,它被 Console.WriteLine 调⽤)中的格式字符串内的括号中放⼊⾮索引数字的内容。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
hour, using a 12-hour clock (11) [01-12]
%M
minute (48) [00-59]
%m
month (09) [01-12]
%p
either "am" or "pm" (pm)
%S
second (10) [00-61]
%w
weekday (3) [0-6 = Sunday-Saturday]
输出结果:
1. 34.23
更多用法
前面是常用的格式控制符,string.format()还有很多其他的格式控制符, 更详细的信息可以参考官方文档。 %c - 接受一个数字, 并将其转化为 ASCII 码表中对应的字符 %d, %i - 接受一个数字并将其转化为有符号的整数格式 %o - 接受一个数字并将其转化为八进制数格式 %u - 接受一个数字并将其转化为无符号整数格式 %x - 接受一个数字并将其转化为十六进制数格式, 使用小写字母 %X - 接受一个数字并将其转化为十六进制数格式, 使用大写字母 %e - 接受一个数字并将其转化为科学记数法格式, 使用小写字母 e %E - 接受一个数字并将其转化为科学记数法格式, 使用大写字母 E %f - 接受一个数字并将其转化为浮点数格式 %g(%G) - 接受一个数字并将其转化为%e(%E, 对应%G)及%f 中较短的一 种格式 %q - 接受一个字符串并将其转化为可安全被 Lua 编译器读入的格式 %s - 接受一个字符串并按照给定的参数格式化该字符串
%B
full month name (e.g., September)
%c
date and time (e.g., 09/16/98 23:48:10)
%d
day of the month (16) [01-31]
%H
hour, using a 24-hour clock (23) [00-23]
%I
为进一步细化格式, 可以在%号后添加参数. 参数将以如下的顺序读入:
(1) 符号: 一个+号表示其后的数字转义符将让正数显示正号. 默认情况下只 有负数显示符号. (2) 占位符: 一个 0, 在后面指定了字串宽度时占位用. 不填时的默认占位符是 空格. (3) 对齐标识: 在指定了字串宽度时, 默认为右对齐, 增加-号可以改为左对齐. (4) 宽度数值 (5) 小数位数/字串裁切: 在宽度数值后增加的小数部分 n, 若后接 f(浮点数转 义符, 如%6.3f)则设定该浮点数的小数只保留 n 位, 若后接 s(字符串转义符, 如%5.3s)则设定该字符串只显示前 n 位. 在这些参数的后面则是上述所列的转义码类型(c, d, i, f, ...).
5.
--> 05/11/1990
6. tag, title = "h1", "a title"
7. print(string.format("<%s>%s</%s>", tag, title, tag))
8.
--> <h1>a title</h1></font>
第一个例子,%.4f 代表小数点后面有 4 位小数的浮点数。第二个例子%02d 代 表以固定的两位显示十进制数,不足的前面补 0。而%2d 前面没有指定 0,不 足两位时会以空白补足。对于格式串部分指示符得详细描述清参考 lua 手册,或 者参考 C 手册,因为 Lua 调用标准 C 的 printf 函数来实现最终的功能。
time = os.time()
返回一个标准的number(数值)格式的时间值,这也是最原始的时间值 os.time()返回的时间是以秒为单位的。
1、获取当பைடு நூலகம்时间数值
time = os.time(); --如果没有指定任何参数,则返回当前时间
2、通过table参数指定时间,获取指定的时间数值
time = os.time(tab);
关于format参数使用的格式化语法,请参考:string.ftime格式化语法 os.date 的用法与 string.ftime 完全相同 例如: win.consoleOpen()
print( os.date("today is %A, in %B") ) print( os.date("%x", 906000490) )
输出结果:
1. 0x0000015C
%x 的特殊用法与%X 一样
%f 的特殊用法
%0.3f 中的小数点右边的数字表示小数点后面保留多少位,小数点前面的 数字表示位数不足时的填充数,通用用 0 填充。 例如: 格式化一个小数,保留 2 位小数
1. str = string.format("%0.2f",34.2344) 2. print(str)
time = os.time(tab) -->返回值为1131286710
三、取得列表(table)格式的时间
tab = os.date("*t",time)
可以将一个数值格式的时间转换为字符串或者列表 其中第一个参数指定返回的格式,如果第一个参数指定为"*t" 则返回 一个table格式的时间。 第二个参数指定一个时间数值(以秒为单位) 1、获取当前时间的table格式
time = os.time(tab) -->返回值为1131286710
四、取得时间的字符串(string)格式
tab = os.date(format,time) 实际上与取得table格式的时间一样,同样是使用os.date参数,不同 的是第一个参数 如果第一个参数不是"*t" os.date返回字符串
函数定义
string.format() 第一个参数为字符串格式,后面的参数可以任意多个,用于填充 第一个参数中的格式控制符,最后返回完整的格式化后的字符串。
格式控制符以%开头,常用的有以下几种 %s - 接受一个字符串并按照给定的参数格式化该字符串 %d - 接受一个数字并将其转化为有符号的整数格式 %f - 接受一个数字并将其转化为浮点数格式(小数),默认保留 6 位小数, 不足位用 0 填充 %x - 接受一个数字并将其转化为小写的十六进制格式 %X - 接受一个数字并将其转化为大写的十六进制格式
10. string.format("%6.3f", 13) 11. string.format("%q", "One\nTwo") 12. 13. string.format("%s", "monkey") 14. string.format("%10s", "monkey") 15. string.format("%5.3s", "monkey")
--返回值 tab 的数据 {year=2005, month=11, day=6, hour=22,min=18,sec=30} --year表示年,month表示月,day表示日期,hour表示小时,min表示分 钟,sec表示秒,isdst表示是否夏令时 --tab成包括一些其他的成员 tab.yday 表示一年中的第几天 tab.wday 表示星期几(星期天为1)
以下是一些例子:
1. <font face="Courier">string.format("%%c: %c",
83)
输出 S
2. string.format("%+d", 17.0)
输出+17
3. string.format("%05d", 17)
输出 00017
4. string.format("%o", 17)
输出 21
5. string.format("%u", 3.14)
输出 3
6. string.format("%x", 13)
输出 d
7. string.format("%X", 13)
输出 D
8. string.format("%e", 1000)
输出
1.000000e+03
9. string.format("%E", 1000) 1.000000E+03
1. <font face="Verdana, Arial, Helvetica,
sans-serif">print(string.format("pi = %.4f", PI))
2.
--> pi = 3.1416
3. d = 5; m = 11; y = 1990
4. print(string.format("%02d/%02d/%04d", d, m, y))
出 mon</font>
输出
输出 13.000 输出"One\
Two" 输出 monkey 输出 monkey 输
%a
abbreviated weekday name (e.g., Wed)
%A
full weekday name (e.g., Wednesday)
%b
abbreviated month name (e.g., Sep)
%x
date (e.g., 09/16/98)
%X
time (e.g., 23:48:10)
%Y
full year (1998)