返回介绍

Function StringFormat

发布于 2020-03-05 18:21:32 字数 5294 浏览 960 评论 0 收藏 0

StringFormat

返回格式化字符串(类似于C语言的sprintf() 函数)。

StringFormat ( "格式控制字符串", 变量1 [, ... 变量32] )

参数

格式控制字符串 要使用的格式和标志符(请查看下面的注意部分).
变量1...变量32 最多可使用32个变量,与“格式控制字符串”的标志符一一对应输出。

返回值

返回根据“格式控制字符串”参数中定义的“变量格式”格式化后的字符串。

注意

为防止缓冲溢出,每个“变量”最多只能含有 65535 个字符。

“变量格式”是: %[标志] [宽度] [.精度] 类型

宽度控制

格式字符串的第二个可选区域用于宽度控制。宽度参数是一个非负的十进制整数,用以控制字符的最小输出宽度。若输出值中实际字符数少于指定宽度则在数值的左侧或右侧补上空格(若标志是-号则左对齐)。若宽度带有前缀数值0则补零(直到达到最小宽度为止,对于左对齐数值没有意义)。

宽度控制不会使数值被截断。若输出值中字符数大于指定宽度或宽度未给定则输出数值的所有字符(但要服从精度控制)。

类型控制

类型 变量类型 输出格式
d, i 整数 带符号的十进制整数。
o 整数 无符号的八进制整数。
u 整数 无符号的十进制整数。
x 整数 无符号的十六进制整数,使用 "abcdef" 表示。
X 整数 无符号的十六进制整数,使用 "ABCDEF" 表示
e 浮点数 带符号的数值,形式为 [ - ]d.dddd e [符号]ddd,其中 d 是一位十进制数,dddd 是一位或多位的十进制数,ddd 则(正好)是三位的十进制数,符号 则是 + 或 -。
E 浮点数 同上,但用大写 E 而不是小写 e(都被称为科学表示法)。
f 浮点数 带符号的数值,形式为 [ - ]dddd.dddd,其中 dddd 是一位或多位的十进制数。小数点前面的位数由该数的大小决定,而小数点后面的位数则由精度决定。
g 浮点数 带符号的数值,以 fe 的格式输出,两者在给定的数值和精度下都会更紧凑一些。当指数小于 -4 或大于等于精度则使用 e 的格式;数值后面的零将被截断,仅当小数点后有一个或更多位数时才保留小数点。
G 浮点数 同上,但用大写 E 而不是小写 e
s 字符串 字符串。

标志控制

标志 意义 默认
- 在给定的宽度内左对齐。 右对齐
+ 若输出值是某种带符号类型则对输出值前缀一个符号(+ 或 -)。 仅当带符号数值是负数时才会出现符号(-)。
0 若宽度带有前缀 0 则补零(直到达到最小宽度为止)。若 0 和 - 同时出现则 0 将被忽略。若 0 以整数格式(iuxXod)指定则 0 将被忽略。 不补零。
空格 若输出值是带符号的并且是正数则对输出值前缀一个空格;若 空格 和 + 标志同时出现则 空格 将被忽略。 无空格。
# 结合 oxX 格式使用时,# 标志表示要对所有非零输出值各自前缀一个 0、0x 或 0X。 无空格。
# 结合 eEf 格式使用时,# 标志表示要强制添加小数点到输出值中。 仅当小数点后有数时小数点才会出现。
# 结合 gG 格式使用时,# 标志表示要强制添加小数点到输出值中并阻止数值后面的零被截断。
cdius 标志也出现则此标志将被忽略。
仅当小数点后有数时小数点才会出现。数值后面的零将被截断

精度控制

格式字符串的第三个可选区域用于精度控制。精度控制是一个非负的十进制整数,带一个小数点(.)。它用来指定要输出的字符数、小数位数 或者 有效数字(请看下面的表)。和宽度控制不同的是,精度控制的出现将导致输出值被截断或者浮点数被四舍五入。若给定的精度为0而输出值也正好为0则不会输出任何字符,请看下面这个示例(C 语言):

printf( "%.0d", 0 ); /* 不会输出任何字符 */

精度如何影响类型

类型 意义 默认
d, i, u, o, x, X 精度决定了要输出的数值的最小位数。若位数小于精度则输出值将被补零(左边开始)。当输出值的位数大于精度时则该数值并不会被截断。 默认精度为 1。
e, E 精度决定了要输出的数值的小数点后的位数。最后一位输出数将执行约舍(四舍五入)。 默认精度为 6;若精度为0或者是小数点(.)出现而无任何数字在后则小数将不被输出。
f 精度决定了要输出的数值的小数点后的位数。小数点前必须至少有一位数。该数值将被约舍。 默认精度为 6;若精度为0或者是小数点(.)出现而无任何数字在后则小数将不被输出。
g, G 精度决定了要输出的数值的最大有效数字。 输出六位有效数字,数值后面的所有零将被截断。
s 精度决定了要输出的数值的最大有效数字。超出精度的字符将不被输出。 字符序列将被输出直到遇到空字符为止。

相关

示例


$string = "string"
$float = 12.3
$int = 345
$s =StringFormat ( "var1=%s var2=%.2f var3=%d" ,$string, $float, $int )
msgbox(0, "结果", $s)
; 将输出 "var1=string var2=12.30 var3=345"
; 注意,之所以会输出 12.30 是因为格式控制字符串中的 %.2f 表示强制保留2位小数



如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文