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 调⽤)中的格式字符串内的括号中放⼊⾮索引数字的内容。
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()详解java中:从 Java 5.0 开始,String类新增了⼀个强⼤的字符串格式化⽅法format()。
这个⽅法到现在⽤的⼈还是不多,实在是⼀种浪费。
本⽂带你快速过⼀遍这个⽅法的功能,将来你要⽤到格式化⽂本的时候,可能就不需要再借⽤第三⽅类库或⾃⼰去实现了。
⾸先看⼀个简单例⼦:String formatted = String.format("%s今年%d岁。
", "⼩李", 30); // "⼩李今年30岁。
"不⽤我多解释,你也可以看出:1. 这个⽅法第⼀个参数是格式串,后⾯的参数都是格式串的参数,⽤于替换格式串中的占位符。
2. 占位符以 "%x" 的形式表⽰,不同的参数类型要⽤不同的字母。
后⾯会具体介绍。
3. String.format()返回值类型为字符串,也就是格式化的结果。
⼀、占位符类型占位符 "%" 后⾯的字母决定了其接受的实际参数的类型。
占位符类型有下⾯⼏种:字母适⽤参数类型说明%a浮点数以16进制输出浮点数%b / %B任意值如果参数为null则输出 false,否则输出 true%c / %C字符或整数输出对应的 Unicode 字符%d整数对整数进⾏格式化输出%e / %E浮点数以科学记数法输出浮点数%f浮点数对浮点数进⾏格式化输出%g / %G浮点数以条件来决定是否以科学记数法⽅式输出浮点数%h / %H任意值以 16 进制输出参数的hashCode()返回值%o整数以8进制输出整数%s / %S字符串对字符串进⾏格式化输出%t⽇期时间对⽇期时间进⾏格式化输出%x / %X整数以16进制输出整数%n⽆换⾏符%%⽆百分号本⾝⼤写字母表⽰输出的字母都为⼤写。
我们平常⽤的最多的就是%s、%d和%f,偶尔会⽤到%t。
本⽂篇幅有限,仅介绍这四种,剩下的请⾃⾏阅读。
stringformat的详细用法 -回复
stringformat的详细用法-回复string.format是Python中的一个字符串格式化方法。
它允许将变量或值插入到字符串中,并根据指定的格式进行格式化。
本文将详细介绍string.format的用法,以及示例和实际应用场景。
1. 简介string.format方法是Python中格式化字符串的主要方式之一,通过大括号{}作为占位符,可以在字符串中插入变量、值或表达式。
这个方法在Python 2.6及以上版本中都是可用的。
2. 基本用法下面是一个简单的例子,演示了如何使用string.format方法:name = "Alice"age = 25print("My name is {}, and I am {} years old.".format(name, age))运行结果:My name is Alice, and I am 25 years old.在上述例子中,大括号{}用作占位符,format方法在字符串内部被调用,传入的参数name和age分别代替了占位符的位置。
在format方法中,参数的顺序和占位符的顺序一一对应。
3. 位置参数除了按顺序传递参数之外,也可以通过指定索引来确定参数的位置。
例如:name = "Alice"age = 25print("My name is {0}, and I am {1} years old.".format(name, age)) 运行结果:My name is Alice, and I am 25 years old.在上述例子中,大括号内的索引用来指定参数的位置,0对应name,1对应age。
这样做的好处是,可以更灵活地控制参数的位置。
4. 关键字参数除了位置参数,还可以使用关键字参数来指定参数的值。
例如:name = "Alice"age = 25print("My name is {name}, and I am {age} yearsold.".format(name=name, age=age))运行结果:My name is Alice, and I am 25 years old.在上述例子中,大括号内的占位符由name和age指定,通过关键字参数的方式传递name和age的值。
string的format函数 -回复
string的format函数-回复使用字符串的format函数是Python中非常常用的一种操作,它可以提供一种简单而灵活的方式来格式化字符串。
format函数主要用于将变量的值插入到一个带有占位符的字符串中,以便创建最终的格式化字符串。
在本文中,我们将逐步介绍format函数的使用方法,以及一些常见的用例和最佳实践。
什么是format函数?在Python中,format函数是一种字符串操作函数,它用于将不同类型的数据插入到一个字符串中。
可以说,format函数是字符串内插值的一种方式。
使用format函数,我们可以在字符串中留下一些占位符,然后通过传递参数的方式将实际的值插入到占位符的位置。
这对于需要在字符串中插入变量的时候非常有用,而不需要手动拼接字符串。
format函数的基本语法format函数的基本语法如下:pythonresult = "格式化字符串".format(参数1, 参数2, ...)在这个基本的语法结构中,用花括号{}来表示一个占位符,这个占位符可以放在字符串中的任何位置。
在format函数中,需要传递的参数将按照占位符的顺序依次替换。
format函数返回的结果是一个字符串,其中占位符被实际的值替换。
下面是一个示例,演示了如何使用format函数来格式化字符串:pythonname = "Alice"age = 25result = "她的名字是{},她今年{}岁了。
".format(name, age)print(result)运行以上代码,将会输出:她的名字是Alice,她今年25岁了。
在这个示例中,我们在字符串中使用了两个占位符{},分别用于插入变量name和age的值。
format函数按照占位符出现的顺序,将传递的参数插入到相应的位置。
format函数的高级用法除了简单地按顺序插入参数的值之外,format函数还支持一些更高级的用法,可以通过指定占位符的索引或名称来控制参数的插入位置。
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,没有其他特殊意义。
C#中String.Format()的简单用法
C#中String.Format()的简单用法String.Format()可以替换相关项,代码如下,其中{}为此方法认别的替换符:•单个字符替换如下:o String RepString = String.Format("Format 是C#String类常用功能之一,{0}","谢谢观赏!");o RepString 的值为:Format 是C#String类常用功能之一,谢谢观赏!•两个或者两个以上o String RepString = String.Format("String.Format(),{2},{1},{0}","谢谢观赏!","我们在学习和工作中要灵活运用","是C#常用方法之一");o RepString的值为:String.Format(),是C#常用方法之一,我们在学习和工作中要灵活运用,谢谢观赏!•总结:前面有几个{},后面就跟几个参数。
以此类推,后面的参数可以是无限。
•换而言之,也可以用数组来做:可以用一个循环来解决这个问题arrInfomationID 是一个定义好的数组strSQL = "insert into TableName(InformationID,COL1,COL2) values({0},值1,值2)";string[] sql= new string[arrInfomationID .Length];for(int i=0;i<arrInfomationID.Length;i++){sql[i]=string.Format(strSQL,InfomationID[i].ToString());}这样,strSQL中的{0}就会被数组arrInfomationID 中的内容依次替换,并组成一个新数组.。
C#string.format()格式化说明符
C#string.format()格式化说明符⼀、定义String.Format是将指定的 String类型的数据中的每个格式项替换为相应对象的值的⽂本等效项。
如:(1)string p1 = "Jackie";string p2 = "Aillo";Response.Write(String.Format("Hello {0}, I'm {1}", p1, p2));(2)Response.Write(String.Format("Hello {0}, I'm {1}", "Jackie", "Aillo"));这⼆者的效果是⼀样的。
都是将最后⾯的两项的值分别替换第⼀项的{0}和{1}。
输出的结果是:Hello Jackie, I'm Aillo⼆、String.Format的多格式定义:这⾥所谓的多格式是指⼀个格式项中可以定义1~3个格式参数,每种格式参数⽤分号(;)隔开。
带2个和3个格式参数的格式项所对应的值必须是数值类型的,这样才能判断是否为负数、正数、零。
带1个格式参数://以科学计数法的格式输出double p1 = 1000000;Response.Write(String.Format("{0:E2}", p1));带2个格式参数:/*当格式项对应的值为⾮负数,则选择第⼀种格式;值为负数则选第⼆种格式*/double p1 = 10000;double p2 = -2420.50;Response.Write(String.Format("{0:#,###0.00;#,###0.000;}<BR>", p1));Response.Write(String.Format("{0:#,###0.00;#,###0.000;}", p2));带3个格式参数:/*当格式项对应的值为正数则选择第⼀张格式;负数则为第⼆中格式;值等于零则为第三种格式*/1double p1 = 10000;double p2 = -2420.50;double p3 = 0.00;Response.Write(String.Format("{0:#,###0.00;#,###0.000;#,###0.0000}<BR>", p1));Response.Write(String.Format("{0:#,###0.00;#,###0.000;#,###0.0000}<BR>", p3));Response.Write(String.Format("{0:#,###0.00;#,###0.000;#,###0.0000}", p2));补充:{0:N2} 中的N3,f3表⽰格式化之后数据的类型以及⼩数的位数。
String.Format使用方法
String.Format使⽤⽅法1、作为參数名称说明将指定的中的格式项替换为指定的实例的值的⽂本等效项。
将指定中的格式项替换为指定数组中对应实例的值的⽂本等效项。
将指定中的格式项替换为指定数组中对应实例的值的⽂本等效项。
指定的參数提供区域性特定的格式设置信息。
将指定的中的格式项替换为两个指定的实例的值的⽂本等效项。
将指定的中的格式项替换为三个指定的实例的值的⽂本等效项。
多个參数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⽤来格式化字符串(按指定的规则连接字符串或输出其它变量并返回新的字符串) 。
STRING.FORMAT的详细用法
"}, 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实际上是调⽤⽬标类的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⽣成格式字符串。
字符串参数格式化string.Format和string.Replace选择使用的一些想法
字符串参数格式化string.Format和string.Replace选择使⽤的⼀些想法⼩篇幅字符串格式化建议⽤ string.Format如string str = @"Title:{0}Name:{1}Content:{2}";使⽤string.Format 格式化参数列参数⽤意简单明了⼤篇幅字符串格式化建议⽤string.Replace如string str = @"create proc [{PrefixName}{ApplicationName}_AddUpdate]int,11111111111111111111111111ASIF EXISTS(SELECT [{strPrimaryKey}] FROM [{TableName}] WHERE [{strPrimaryKey}] = @{strPrimaryKey})BEGINUPDATE [{TableName}] SET{ColumnNameAndParameterColumnName}[Name] = @Name,1111111111111111111111111WHERE[{strPrimaryKey}] = @{strPrimaryKey}SELECT @{strPrimaryKey}END";这种的⽤ {0} {1}参数占位标记的话再要格式化的时候就完全不知道{0}{1}代表的具体含义就得上下来回翻阅代码来确定费时费⼒{ColumnNameAndParameterColumnName}[Name] = @Name,1111111111111111111111111使⽤这种写法参数占位参数⽤意简单明了 [Name] = @Name,1111111111111111111111111 参数后⾯写这个是为了表明参数格式和快速查找参数位置⽅便调试这个格式化代码调试完删除 [Name] = @Name,1111111111111111111111111 这段代码要格式化的时候直接 string.Replace("{ColumnNameAndParameterColumnName}",要替换的内容)如果有更好的格式化字符串⽅法⿇烦留⾔告诉我下(⊙_⊙)?。
- 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)