理解LabVIEW格式说明符语法,用于格式化输出或扫描输入的格式字符串。

格式化函数的格式说明符语法

格式化函数使用完整格式说明符语法:

%[$][-][+][#][^][0][Width][.Precision∥_Significant Digits][{Unit}][<Embedded Time Format>]Conversion Code

其中

  • 宽度必须为大于0的数字
  • 精度或有效数字必须为大于或等于0的数字
备注
  • 双括号[]表示可选元素。格式说明符中无需包含文本[]字符,除非有特定的语法元素需要。
  • ∥表示如选择.精度或_有效数字,必须选择其中之一。
  • 将语法中的文本替换为合适的语法元素。

扫描函数的格式说明符语法

扫描函数使用简化的格式说明符语法:

%[Width]Conversion Code

其中宽度必须为大于0的数字

备注
  • 双括号[]表示可选元素。格式说明符中无需包含文本[]字符。
  • 将语法中的文本替换为合适的语法元素。

格式说明符语法元素

格式说明符支持特定的语法元素,这些语法元素定义了LabVIEW函数如何解析输入字符串并生成输出字符串。理解用于创建所需输出字符串的格式说明符语法。

%分隔符

表示格式说明符开始的所需元素。

格式化写入字符串、格式化写入文件、扫描字符串和扫描文件函数是可扩展的。这些函数可在格式字符串中使用多个格式说明符,每个输入或输出对应一个格式说明符。

  • 格式字符串中格式说明符的数量必须与函数的参数数量相匹配。
  • 如需在格式字符串输入中指定多个格式说明符,可用%表示每个格式说明符。

修改量

使用可选修饰符元素优化格式字符串创建的输出。

语法元素 格式化函数或扫描函数 说明
$ 正在格式化 指定显示变量的顺序。包括代表变量顺序的位数,其后紧接该修饰符。
- 正在格式化 左对齐参数宽度,而不是右对齐参数宽度。
+ 正在格式化 即使数字为正数,也包括符号。
^ 正在格式化
  • 与e或g转换代码一起使用时,将数字格式化为工程计数法。在工程表示法中,指数总是3的倍数。
  • 与T配合使用时,将时间格式化为通用时间。
# 正在格式化 删除尾部的零。如数值无小数部分,该修饰符会将有效数字精度之外的数值强制为零。
0 正在格式化 不带- 修饰符时,在数值参数左侧使用零填充多余的空格,而不是空格,以达到最小宽度。
宽度
  • 正在格式化
  • 扫描
  • 格式化函数:宽度指定输出的最小字符域宽度。该宽度不是最大宽度。LabVIEW使用适量的字符格式化参数,而不是截断参数。LabVIEW将字段填充到带空格的参数的左侧或右侧,具体取决于对齐方式。如Width未提供或为0,则输出长度仅为包含经转换的输入参数所需的长度。
  • 扫描功能:宽度指定要使用的最大字符域宽度。LabVIEW处理参数时扫描最大数量的字符。
.Precision或_Significant Digits 正在格式化 控制显示的位数,其中精度或有效数字为数字。
备注 一个百分号代码中不可同时使用精度和有效数字。
  • .精度:数字是小数点右边数字的精度说明符。.精度仅影响小数点右边的数字。.精度具有下列特殊交互作用或值:
    • .浮点表示法 - 与浮点表示法使用时,该元素指定小数点右边的位数。
    • .不存在:LabVIEW使用的精度为6个数字。
    • .为0,LabVIEW将不插入精度。
    • 与字符串参数配合使用:指定扫描区域的最大宽度。LabVIEW截取的字符串比该长度更长。
  • _Significant Digits:数字是显示格式中使用的有效数字的数量。显示舍入为指定位数的数据。LabVIEW仅为显示之目的,对数据进行舍入,并不影响原始数据。包括所有非空格数字。例如:
    • 3.457有4个有效数字
    • 0.0012有2个有效数字
    • 123000有3个有效数字

    根据数字的类型,NI建议将有效数字设置为以下值:

    • 单精度浮点数:[1, 6]
    • 双精度和扩展精度浮点数:[1, 13]
{Unit} 正在格式化 使用函数转换物理量时(带单位的值),将覆盖VI的原单位。必须使用兼容单位。
备注 该语法元素只能与格式化写入字符串函数配合使用。
<嵌入时间格式> 正在格式化 包含与T(绝对时间)和t(相对时间)转换代码配合使用的具体时间格式字符串。关于有效的嵌入式时间格式字符串,请参考时间特定格式代码。

转换代码

指定怎样扫描或格式化参数的字符。扫描函数和格式化函数所需的元素。

转换代码主要处理特定类型的数据,但可解析多种类型的数据。

数字转换代码

转换代码 支持的数值 说明
x
  • 整型
  • 定点数
十六进制整数(例如,B8)。
o
  • 整型
  • 定点数
八进制整数(例如,701)。
b
  • 整型
  • 定点数
二进制整数(例如,1011)。
d
  • 整型
  • 定点数
有符号十进制整数。
u
  • 整型
  • 定点数
无符号十进制整数。
f
  • 浮点数
  • 定点数
带小数格式的浮点数(例如,12.345)。
e
  • 浮点数
  • 定点数
科学计数法表示的浮点数(例如,1.234E1)。
g
  • 浮点数
  • 定点数
自动格式化。根据数字的指数,使用f或e。
  • 指数大于-4或小于指定精度:使用f
  • 指数小于-4或大于指定精度:使用e
p
  • 浮点数
  • 定点数
SI计数法表示的浮点数。
备注 数字的转换代码可将其他类型的数据解析为:
  • 布尔值:0表示FALSE,1表示TRUE
  • 枚举:解析枚举项的数值索引值

字符串的转换代码

转换代码 说明
s 字符串(例如,abc)
  • 扫描时,s仅与下一个白空字符匹配。
  • 一个空白与一个或多个连续空白字符匹配。要扫描一个可能含有白空的字符串,在集合转换代码中使用字符。指定字符串中包含在括号中的所有字符,包括空格和其他空白字符。
[ ] 集合中的字符:与仅包含括号中指定字符的字符串相匹配。
备注 只有扫描字符串时,才会用到[ ]转换代码,而不是格式化字符串。

字符匹配区分大小写。

下列字符在[ ]转换代码中具有特殊含义:

  • 在集合中指定包含起始和结束字符的字符范围:在限定范围的字符之间使用连字符(-)。

    要匹配一个连字符,将其指定为集合中的第一个或最后一个字符。

  • 扫描直到集合中指定字符的第一个匹配:输入插入符号^作为起始括号[之后的第一个字符。

    如要匹配一个文本插入符号,将插入符号放置在集合中的其他位置。

下列范例显示了集合转换代码中字符的用处。

  • %[aeiou]-匹配只有小写元音字母的字符串。
  • %[0-9a-zA-Z]-匹配含有数字、字母或空格的字符串。
  • %[^,;]:仅扫描字符串,直至函数找到第一个逗号或分号。
备注 s可解析其他类型的数据如下:
  • 布尔值:解析False和True
  • 枚举:解析枚举项的字符串标签
  • 已命名的引用句柄,如DAQmx通道或VISA资源名称
  • 路径

时间转换代码

转换代码 说明
T 绝对时间。将T用于数值或时间标识控件、常量和显示控件的显示格式属性,以及格式化写入字符串、格式化写入文件、扫描字符串和扫描文件函数。
备注 T不能与数组至电子表格字符串转换、电子表格字符串至数组转换、格式化值和扫描值函数配合使用。

时间标识只能按照时间格式,否则返回错误。

t 相对时间。将t用于数值或时间标识控件、常量和显示控件的显示格式属性,以及格式化写入字符串、格式化写入文件、扫描字符串和扫描文件函数。
备注 t不能与数组至电子表格字符串转换、电子表格字符串至数组转换、格式化值和扫描值函数配合使用。

时间标识只能按照时间格式,否则返回错误。

备注 T可解析时间标识和数值。t仅可解析数值。

本地化代码

确定LabVIEW将小数部分与整数部分分隔开的是句点还是逗号的可选序列。

这些代码控制数值输出的小数分隔号。这些代码不会产生任何输入或输出。这些代码将为其后的输入输出改变小数分隔号,直到找到下一个%;。

表 5. 格式说明符的本地化代码
本地化代码 说明
%,; 逗号小数分隔号。
%.; 句点小数分隔号。
%; 系统默认分隔号。如不指定分隔号,LabVIEW将使用系统默认的分隔号。

文字字符

如需在输入字符串中添加字符,可在格式字符串中添加文字字符。可在格式字符串中使用转义序列插入特定字符。

表 6. 格式说明符的转义字符
转义序列 输出 说明
%% % 避免与定义格式说明符开始的%分隔符冲突。
\> > 避免与结束嵌入时间格式修饰符的>分隔符冲突。
反斜杠符号(\) 取决于反斜杠代码 指定十六进制数、空格、回格和其他格式选项的字符序列。

关于反斜杠代码的更多信息,见反斜杠('\')代码显示。

格式说明符语法范例

通过实际范例了解LabVIEW格式说明符如何将输入参数转换为输出字符串。

自动格式化(%g)范例

参数 格式字符串 结果字符串
12.00 %#g 12
12000000 %#g 1.2E+7

如指定#,LabVIEW将移除尾部的无效零。

如指定g,LabVIEW根据要格式化的数字的指数选择科学表示或浮点表示。

十进制(%d)范例

参数 格式字符串 结果字符串
12.67 score= %d%% score= 13%

如指定%d,LabVIEW将以十进制格式显示整数。

  • 对于任意位大小的有符号或无符号整数,LabVIEW显示该整数时不进行修正。
  • LabVIEW将浮点值取整为有符号64位整数。NaN和大于有符号64位整数最大值的值将取整为有符号64位整数的最大值,即9223372036854775807。如需记录的值大于有符号64位整数的最大值,必须使用转换为无符号64位整型函数明确地将值转换为无符号64位整数。

浮点型(%f)范例

参数 格式字符串 结果字符串
12.67 Temp: %5.1f Temp: 12.7
12.67 N %5.3f 12.670 N
12.67 N %5.3{mN}f 12670.000 mN
12.67 N %5.3{kg}f 12.670 ?kg
  • 格式字符串中的5指定宽度为5。.后的数字指定小数点右边的位数,即精度。
  • 只有使用格式化写入字符串函数,单位才有效。带单位的范例演示了格式说明符与物理量的交互方式。
    • 用户可将单位转换为其他单位。
    • 问号表示格式说明符中的单位与输入单位有冲突。

科学表示法(%e)范例

参数 格式字符串 结果字符串
12.67 %.3e 1.267E+1
12.67 %^.3e 1.2670E+0

添加^,改为工程表示法,其中指数为3的倍数。

SI表示法(%p)范例

参数 格式字符串 结果字符串
12000000 %.2p 12.00M
12000000 %_2p 12M
  • .2表示在结果字符串中精度为2个数字。
  • _2表示在结果字符串中有2个有效数位。
  • %p代码添加SI前缀。

十六进制(%x)、八进制(%o)和二进制(%b)范例

参数 格式字符串 结果字符串
12 %02x 0C
12 %06o 000014
12 %b 1100

b(二进制)是基数2。o(八进制)是基数8。x(十六进制)是基数16。

  • 可使用-修饰符左对齐结果字符串。
  • 0修饰符表示用零填充得到的字符串。
  • 格式说明符中的数字指定结果字符串的宽度。

例如,一个修饰符-n用空格填充得到宽度为n的字符串。

相对时间(%t)范例

参数 格式字符串 结果字符串
91.80 %.2t 01:31.80
91.8 %<小时:%H 分:%M 秒:%S>t Hours:00 Minutes:01 Seconds:31

LabVIEW按以下方式格式化已用时间:

  • 完整周(%W)
  • 完整天数(%D)
  • 完整小时(%H)
  • 完整分钟(%M)
  • 完整秒(%S)
  • 秒的小数部分(%digitu)

关于嵌入式时间格式代码的更多信息,见时间特定格式代码。

绝对时间(%T)范例

参数 格式字符串 结果字符串
00:00:00.000 AM 1/1/2001(通用时间) %<%.3X %x>T 12:00:00.000 AM 01/01/2001
00:00:00.000 AM 1/1/2001(通用时间) %<%Y.%m.%d>T 2001.01.01
00:00:00.000 AM 1/1/2001(通用时间) %^<%.3X %x>T 06:00:00.000 AM 12/31/2000

%T指绝对时间。

  • 嵌入时间格式(<和>之间)中包含的任何信息都表明如何格式化绝对时间。关于嵌入式时间格式代码的更多信息,见时间特定格式代码。
  • 该格式,包括其中的标点,根据计算机的区域设置而改变。时间根据计算机的时区设置改变。
  • 添加^,在通用时间中格式化时间。

字符串(%s)范例

参数 格式字符串 结果字符串
Smith John Name: %s, %s. Name: Smith, John.
Hello, World String: %10.6s String: Hello,
  • %s对格式化和扫描均有效。%s可用于字符串和文件。
  • 在第一个范例中,格式字符串使用多个格式说明符。要实现该结果,请执行以下操作:
    • 在格式化写入字符串的输入1中输入族名(Smith)。
    • 展开格式化写入字符串,单击并拖曳函数底部,添加第二个输入。将给定名字(John)提供给结果输入2。
    • 输入提供的格式字符串。由于格式字符串包含两个%分隔符,格式字符串包含两个格式说明符。格式字符串中格式说明符的数量必须与函数的输入数量相匹配。LabVIEW将不属于格式说明符的字符解析为要添加至结果字符串的文本。
  • 在第二个范例中,.6控制字符串的精度。.6指定字符串Hello, World中最多使用6个字符。10是宽度:LabVIEW用空格填充字符串,因此字符串的总长度等于10。

变量顺序(%$)范例

参数 格式字符串 结果字符串
Smith John %2$s %1$s John Smith

在该例中,Smith是第一个变量,John是第二个变量。

  • 如在格式字符串中为某个变量使用$,其后的语法元素如果不是以$打头,则属于下一个变量。
  • 如需提高变量使用$的可读性,可在字符串中的其他变量上使用$。

文字百分号字符范例(%%)

参数 格式字符串 结果字符串
空参数 %% %

%%不会为格式化写入字符串或扫描字符串函数添加接线端。