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.字符串:qweqwe
2.整数:1
3.小数:0.130000
4.十六进制数:15C
5.
%X的特殊用法
%08X 中间的第2个数字格式化成多少位,第1个数字表示不足位数时的填充数,通常用0填充。

例如:
1.str = string.format("0x%08X",348)
2.print(str)
前面的0x只是个普通的字符串,可有可无,因为我们一般在十六进制数前面加上0x来表明这是一个十六进制数,所以这里才加了个0x,没有其他特殊意义。

输出结果:
1.0x0000015C
%x的特殊用法与%X一样
%f的特殊用法
%0.3f 中的小数点右边的数字表示小数点后面保留多少位,小数点前面的数字表示位数不足时的填充数,通用用0填充。

例如:
格式化一个小数,保留2位小数
1.str = string.format("%0.2f",34.2344)
2.print(str)
输出结果:
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 - 接受一个字符串并按照给定的参数格式化该字符串
为进一步细化格式, 可以在%号后添加参数. 参数将以如下的顺序读入:
(1) 符号: 一个+号表示其后的数字转义符将让正数显示正号. 默认情况下只
有负数显示符号.
(2) 占位符: 一个0, 在后面指定了字串宽度时占位用. 不填时的默认占位符是空格.
(3) 对齐标识: 在指定了字串宽度时, 默认为右对齐, 增加-号可以改为左对齐.
(4) 宽度数值
(5) 小数位数/字串裁切: 在宽度数值后增加的小数部分n, 若后接f(浮点数转义符, 如%6.3f)则设定该浮点数的小数只保留n位, 若后接s(字符串转义符, 如%5.3s)则设定该字符串只显示前n位.
在这些参数的后面则是上述所列的转义码类型(c, d, i, f, ...).
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))
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函数来实现最终的功能。

以下是一些例子:
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
10.string.format("%6.3f", 13) 输出13.000
11.string.format("%q", "One\nTwo") 输出"One\
12.Two"
13.string.format("%s", "monkey") 输出monkey
14.string.format("%10s", "monkey") 输出 monkey
15.string.format("%5.3s", "monkey") 输
出 mon</font>。

合集下载

LUA脚本精灵STRING.FORMAT()函数的用法

LUA脚本精灵STRING.FORMAT()函数的用法

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)

String.format()的详细用法

String.format()的详细用法

String.format()的详细⽤法问题在开发的时候⼀段字符串的中间某⼀部分是需要可变的⽐如⼀个Textview需要显⽰”XXX⽤户来⾃上海年龄 21 性别男”其中的 XXX 是⽤户名每个⽤户也是不⼀样的地区上海为可变的string数据年龄 21 为可变的int数据性别男为可变的string数据遇到这种情况你们是怎么样解决的呢?把这段字符串保存在常量类⾥吗?不!我们应该遵循Google的开发模式XML<string name="user_info'> %1$s</span> ⽤户来⾃ <span class="hljs-variable">%2</span><span class="hljs-variable">$s 年龄 %3$d</span> 性别 <span class="hljs-variable">%4</span><span class="hljs-variable">$s</string> 1JAVA1. String userName="XXX";2. String userProvince="上海";3. int userAge=21;4. String userSex="男";5. String string=getResources().getString(er_info);6. String userInfo=String.format(string,userName,userProvince,userAge,userSex);是不是觉得很⽅便本来是打算当笔记记录下来备忘的,但是有朋友有朋友问到的⼀些相关的东西,我就完善⼀下吧String.format()字符串常规类型格式化的两种重载⽅式format(String format, Object… args) 新字符串使⽤本地语⾔环境,制定字符串格式和参数⽣成格式化的新字符串。

STRING.FORMAT的详细用法

STRING.FORMAT的详细用法
2.ToString 方法的深入理解 通过第一步的分析如果纯粹从分析 Format 这个方法来说已经足够了,大括号的特殊标记作用以及和后面 参数的对应关系也已经解释清楚了。但是这里还是需要深入了解一下 ToString 方法。 上面 1 中提到如果一个自己定义的类不去重写 ToString 方法的话则会 输出类的全名,例如 public class Person
"}, DateTime.Now, DateTime.Now.DayOfWeek); Console.WriteLine(msg6);
则会输出:
这里再次强调一下,如果某个对象需要转换成 ToString,并且没有手动调用该方法,程序会自动调用该方 法,上面的 new Person() {Name = "Zhezhe"}没有手工调用,程序会自动调用方法(new Person () {Name = "Zhezhe"}).ToString(); 这个是微软让你少些代码而已,好的习惯是始终写上 .ToStrin g(); .net 中的任何对象都具有该方法,因为该方法在 object 对象中定义,任何类或者结构都会继承 object, 所以不用担心一个对象没有 ToString 方法。
public class PersonWithToString { public string Name { get; set; }
public override string ToString() {
return Name; }
public string ToString(string format) {
s.Append("Hello Cnblogs, I am "); s.Append(name); s.Append(",Today is "); s.Append(DateTime.Now.ToString("yyyy-MM-dd")); s.Append(" "); s.Append(DateTime.Now.DayOfWeek); s.Append("."); var msg3 = s.ToString(); 顺便解释一下 string 和 StringBuilder:string 虽然也是引用类型,但是该类型.net 内部进行了特殊处理, 让其表现出和值类型相似的特征,特别是在每次变动之后就会重新分配内存空间,而 StringBuilder 就不 会,所以如果有很多个字符串相加拼接,则 string 性能较低。 在用 Append 方法进行添加的时候会有两种情况: 一种是{0},{1}这样的不带有特殊格式化的则直接会调用该对象的 ToString 方法,比如上面的 s.App end(DateTime.Now.DayOfWeek);其实就是 s.Append(DateTime.Now.DayOfWeek.ToString()); 在.net 中,如果是自己定义的类,并且没有重写 ToString 方法,则会输出类的全名,下面会详细讨论。 另一种是{0:yyyy-MM-dd}带有特殊格式化的则继续分解,将冒号后面的内容分解出来,并且在调用 To String 时作为参数传入,上面的 s.Append(DateTime.Now.ToString("yyyy-MM-dd"));就体现了这一 点。所以这些其实都没什么奥妙可言,冒号也是一个预定义好的标记而已,如果微软让你去实现这个,你 也可以用其他符号。

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脚本精灵stringformat()函数的用法.

lua脚本精灵stringformat()函数的用法.

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,没有其他特殊意义。

lua 16进制转2进制

lua 16进制转2进制

lua 16进制转2进制如何使用Lua将16进制转换为2进制Lua是一种简单易学的脚本语言,广泛应用于嵌入式系统和游戏开发中。

拥有强大的字符串处理功能,可以轻松地将十六进制数转换为二进制数。

下面将一步一步回答如何使用Lua实现这一转换的过程。

第一步:了解十六进制和二进制的基本概念在计算机科学中,十六进制和二进制是常用的数字表示方式。

十六进制由0-9以及A-F共16个数码组成,分别表示0-15的十进制数。

二进制则由0和1两个数字组成,表示0和1的十进制数。

第二步:使用Lua中的string.format()函数进行转换Lua中的string.format()函数可以将数值以不同的格式转换为字符串。

在这里,我们将使用该函数将十六进制数转换为二进制数。

以下是一个示例代码:luafunction hexToBin(hex)local binary = string.format("08d", tonumber(hex, 16))return binaryendlocal hexNum = "FF"local binaryNum = hexToBin(hexNum)print(binaryNum)函数hexToBin()接受一个表示十六进制数的字符串作为参数,并返回一个表示二进制数的字符串。

首先,我们使用tonumber()函数将十六进制字符串转换为对应的十进制数。

然后,使用string.format()函数将十进制数以8位长度的二进制字符串的格式进行输出。

最后,将结果返回。

第三步:理解代码的工作原理在代码的第4行,我们首先使用tonumber()函数将hex参数转换为对应的十进制数。

接下来,我们使用string.format()函数将十进制数以"08d"的格式进行输出。

其中,"08d"表示输出8位长度的十进制数,如果位数不够,则在左边用0进行填充。

StringFormat() 用法

String.format函数使用方法介绍关键字: string.format转自:/andycpp/archive/2007/08/18/1749700.aspx在JDK1.5中,String类增加了一个非常有用的静态函数format(String format, Objece... argues),可以将各类数据格式化为字符串并输出。

其中format参数指定了输出的格式,是最复杂也是最难掌握的一点,而argues则是一系列等待被格式化的对象。

该函数对c语言中printf函数的用法进行了一定的模仿,因此有c语言基础的人学起来会轻松许多。

下面我们着重讨论一下format 参数的格式及含义。

format参数中可以包含不需要转化的字符串,这些字符串是你写什么,最终就输出什么。

同时还包含一些特殊格式的内容,来指定将哪个对象来转换,以及转换成什么形式。

这种特殊的格式通通以%index$开头,index从1开始取值,表示将第index个参数拿进来进行格式化。

这一点比c语言要强一点,c语言只能按照参数的顺序依次格式化,而java可以选择第n个参数来格式化。

由于该函数可以对任意一个对象进行格式化,不同的对象适用的参数也不同,因此我们下面分类来讨论。

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-十六进制上面的说明过于枯燥,我们来看几个具体的例子。

String.format()用法

名称说明Format(String, Object) 将指定的String 中的格式项替换为指定的Object 实例的值的文本等效项。

Format(String, array<>[]()[]) 将指定String 中的格式项替换为指定数组中相应Object 实例的值的文本等效项。

Format(IFormatProvider, String, array<>[]()[]) 将指定String 中的格式项替换为指定数组中相应Object 实例的值的文本等效项。

指定的参数提供区域性特定的格式设置信息。

Format(String, Object, Object) 将指定的String 中的格式项替换为两个指定的Object 实例的值的文本等效项。

Format(String, Object, Object, Object) 将指定的String 中的格式项替换为三个指定的Object 实例的值的文本等效项。

多个参数int m[]=new int{a,b,c,d};string.format("{0}{1}{2}",m);一个参数private const string _extraClause = " AND C_INTERNSHIPORG_INTERNSHIPID = {0}";//将MyCrypt.Decrypt(Request["id"])作为_extraClause 的参数if (Request["id"] != null && Request["id"] != string.Empty){mExtraMessage = string.Format(_extraClause,MyCrypt.Decrypt(Request["id"]));}2、格式化数值结果表字符说明示例输出C 货币string.Format("{0:C3}", 2) $2.000D 十进制string.Format("{0:D3}", 2) 002E 科学计数法1.20E+001 1.20E+001G 常规string.Format("{0:G}", 2) 2N 用分号隔开的数字string.Format("{0:N}", 250000) 250,000.00X 十六进制string.Format("{0:X000}", 12) Cstring.Format("{0:000.000}", 12.2) 012.200string.format用来格式化字符串(按指定的规则连接字符串或输出其他变量并返回新的字符串) 。

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格式化字符串输出

string.Format格式化字符串输出string.Format实际上是调⽤⽬标类的ToString(string format,IFormatProvider formatProvider)⽅法。

⽬标类要实现Iformatable接⼝。

实现该⽅法。

使⽤格式化调⽤时有三个参数:string.Format("value is {0,20:N}",v1);⼤括号内,第⼀个参数是参数的索引号。

第⼆个参数是分配的字符数。

如果为正数则右对齐,为负数左对齐,输出⼤于分配字符数则全部输出。

第三个参数是对像的输出格式(该格式字符串会被当作ToString的第⼀个参数format,第⼆个参数是⽤于背景上下⽂,⼀般传⼊null,主要对于windows时区、⽇期、货币等信息)。

public class Point:IFormatable{double x;double y;public string ToString(string format,IFormatProvider formatProvider){if(format==null) return this.ToString();swich(format){case N:return string.format("X:{0,20:N},Y:{0,20:N}",x,y);case XY:return $"{x},{y}";... ...case :.. ...}}}上⾯⾃定义的Point类实现了IFormatable接⼝,就可以使⽤定义的格式来格式化我们的实例。

例如string.Format("Point Is {0,20:XY}",p1);string.Format("Point1 Is {0,20:XY} Point2 Is {1,20:N}",p1,p2);执⾏时,是⽤stringBuilder⽣成格式字符串。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档