Bright Leopold

i come from the other world,i will go back after the love,the regret,the alive and the dead are over

导航

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.000
D 十进制 string.Format("{0:D3}", 2) 002
E 科学计数法 1.20E+001 1.20E+001
G 常规 string.Format("{0:G}", 2) 2
N 用分号隔开的数字 string.Format("{0:N}", 250000) 250,000.00
X 十六进制 string.Format("{0:X000}", 12) C

 
 string.Format("{0:000.000}", 12.2) 012.200


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 - 时区名或缩写
%% - 文字上的 `%' 字符

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yohop/archive/2008/06/11/2534907.aspx

posted on 2011-05-12 20:03  Bright Leopold  阅读(15847)  评论(0编辑  收藏  举报