出力をフォーマットまたは入力をスキャンする形式文字列のLabVIEW形式指定子の構文を理解する。

フォーマット関数の形式指定子の構文

フォーマット関数は完全な形式指定子の構文を使用します。

%[$][-][+][#][^][0][幅][.精度∥_有効数字][{単位}][<組込時間形式>]変換コード

ここで、

  • 幅は0より大きい数値である必要があります
  • 精度または有効数字は0以上の数値である必要があります
メモ
  • 二重角括弧[]はオプションの要素を示します。特定の構文要素で必要な場合を除き、リテラル[]文字を形式指定子に含める必要はありません。
  • ∥は、.精度または_有効数字を使用する場合、どちらか1つを選択する必要があることを示します。
  • 構文内のテキストを適切な構文要素に置換します。

スキャン関数の形式指定子の構文

スキャン関数は簡略化された形式指定子の構文を使用します。

%[幅]変換コード

幅は0より大きい数値であることが必要です。

メモ
  • 二重角括弧[]はオプションの要素を示します。形式指定子にリテラル[]文字を含める必要はありません。
  • 構文内のテキストを適切な構文要素に置換します。

形式指定子の構文要素

形式指定子は、LabVIEW関数が入力文字列を解釈して出力文字列を生成する方法を定義する特定の構文要素をサポートします。必要な出力文字列の作成に使用する形式指定子の構文を理解する。

%デリミタ

形式指定子を開始する必須要素です。

「文字列にフォーマット」、「ファイルにフォーマット」、「文字列からスキャン」、および「ファイルからスキャン」関数は拡張可能です。これらの関数は、形式文字列で複数の形式指定子 (関数の各入力または出力に1つずつ) を使用できます。

  • 形式文字列の形式指定子の数は、関数の引数の数と一致する必要があります。
  • 形式文字列入力で複数の形式指定子を指定するには、各形式指定子を%で示します。

修正キー

オプションの修飾子要素を使用して、形式文字列が作成する出力を改善します。

構文要素 フォーマット関数またはスキャン関数 説明
$ フォーマット 変数を表示する順序を指定します。この修正子のすぐ後の変数の順序を表す数が含まれます。
- フォーマット 左揃えは、パラメータを右揃えではなく幅内で揃えます。
+ フォーマット 数値が正の数でも符号を含みます。
^ フォーマット
  • eまたはg変換コードと使用する場合、数値を工学表記にフォーマットします。工学表記では、指数は常に3の倍数です。
  • Tと使用すると、グリニッジ標準時で時間をフォーマットします。
# フォーマット 末尾のゼロを削除します。小数点以下の桁のない数値の場合、この修飾子は記述部も削除します。
0 フォーマット -修飾子なしで使用すると、最小幅に達するために、数値パラメータの左側の余分なスペースをスペースではなくゼロでパディングします。
幅
  • フォーマット
  • スキャン
  • フォーマット関数: 幅は、出力の最小文字フィールド幅を指定します。この幅は最大幅ではありません。LabVIEWはパラメータを切り捨てずにパラメータの形式に必要な数の文字を使用します。LabVIEWは位置調整に応じてパラメータの左または右のフィールドをスペースでパディングします。Widthが指定されていない、または0の場合、出力は変換された入力パラメータを含めるのに必要な長さになります。
  • スキャン関数: 幅は、使用する最大文字フィールド幅を指定します。LabVIEWは、パラメータを処理する際、最大数の文字をスキャンします。
.精度または_有効数字 フォーマット 表示される桁数を制御します。精度または有効数字は数値です。
メモ 1つの形式指定子で精度と有効桁数の両方を使用することはできません。
  • .精度: 数値は小数点以下の桁数の精度指定子です。.精度は小数点以下の桁数にのみ影響します。.精度には以下の特別な相互作用または値があります。
    • 浮動小数点表記で使用すると、この要素は小数点以下の桁数を指定します。
    • . がない場合: LabVIEW は 6 桁精度を使用します。
    • .が0の場合、LabVIEWは精度を挿入しません。
    • 文字列パラメータで使用: スキャンフィールドの最大幅を指定します。LabVIEWはこの文字数を越える文字列を切り捨てます。
  • _有効数字: 数値は、表示形式で使用する有効数字です。データを指定した桁数まで丸め込み、そのデータを表示します。LabVIEWは表示目的のみでデータを丸め込むため、元のデータは影響されません。空白以外のすべての桁数を含みます。以下に例を示します。
    • 3.457の有効桁数は4
    • 0.0012の有効桁数は2
    • 123000の有効桁数は3

    NIでは、数値のタイプに応じて有効数字を以下の値に設定することを推奨します。

    • 単精度浮動小数点数: [1, 6]
    • 倍精度および拡張精度の浮動小数点数: [1, 13]
{単位} フォーマット 関数を使用して物理量 (関連付けられた単位のある値) を変換する場合、VIの元の単位を無視します。互換性のある単位を使用する必要があります。
メモ この構文要素は、「文字列にフォーマット」関数のみで使用できます。
<組込時間形式> フォーマット T (絶対時間) およびt (相対時間) 変換コードで使用する時間特定の形式文字列が含まれます。有効な組込時間形式文字列については、時間指定形式コードを参照してください。

変換コード

パラメータのスキャンまたはフォーマット方法を指定する文字は以下のとおりです。スキャン関数とフォーマット関数の両方に必要な要素です。

変換コードは、主に特定のタイプのデータで動作しますが、複数のタイプのデータを解釈できます。

数値の変換コード

変換コード サポートされている数値 説明
x
  • 整数
  • 固定小数点数
16進数整数 (例: B8)。
o
  • 整数
  • 固定小数点数
8進数整数 (例: 701)
b
  • 整数
  • 固定小数点数
2進数整数 (例: 1011)
d
  • 整数
  • 固定小数点数
符号付き10進数整数です。
μ
  • 整数
  • 固定小数点数
符号なし10進数整数です。
f
  • 浮動小数点数
  • 固定小数点数
小数形式の浮動小数点数 (例: 12.345)
e
  • 浮動小数点数
  • 固定小数点数
科学表記法の浮動小数点数 (例: 1.234E1)
g
  • 浮動小数点数
  • 固定小数点数
自動フォーマット。数値の指数に応じてfまたはeを使用
  • 指数は、-4より大きいか、指定した精度より小さいです。fを使用します。
  • 指数は、-4より小さいか、指定した精度より大きいです。eを使用します。
p
  • 浮動小数点数
  • 固定小数点数
SI表記の浮動小数点数です。
メモ 数値の変換コードは、他のタイプのデータを以下のように解釈できます。
  • ブール: 0はFalse、1はTrue
  • 列挙体: 列挙体項目の数値指標値を解釈します。

文字列の変換コード

変換コード 説明
s 文字列 (例: abc)
  • スキャン中、sは次の空白文字のみまで一致します。
  • スペースは、1つまたは複数の連続する空白文字と一致します。空白を含む可能性のある文字列をスキャンするには、セットの文字列に変換コードを使用します。スペースまたは他の空白文字を含め、文字列に含めることができるすべての文字を括弧内に指定します。
[ ] セット内の文字: 括弧の間で指定した文字のみを含む文字列と一致します。
メモ [ ]の変換コードは、文字列をスキャン中の場合にのみ有効です。文字列のフォーマット時には有効ではありません。

文字の一致では大文字と小文字が区別されます。

以下の文字は、[ ]変換コード内で特別な意味を持ちます。

  • セット内の文字を含む範囲を指定: 範囲を囲む文字の間にハイフン (-) を使用します。

    リテラルハイフンに一致させるには、ハイフンをセットの最初または最後の文字として指定してください。

  • 指定された文字 (複数可) がセット内で最初に一致するまでスキャン: 左角括弧[の後の最初の文字としてキャレット記号^を入力します。

    リテラルキャレット記号を一致させるには、セット内の他の位置にキャレットを配置します。

以下のサンプルはセット変換コードの文字の使用を示します。

  • %[aeiou]―小文字の母音のみを含む文字列に一致します。
  • %[0-9a-zA-Z ]―数字、文字、スペースを含む文字列に一致します。
  • %[^,;]: 関数が最初のカンマまたはセミコロンを検出するまで文字列をスキャンします。
メモ sは、他のタイプのデータを以下のように解釈できます。
  • ブール: FalseとTrueを解釈
  • 列挙体: 列挙体項目の文字列ラベルを解釈します。
  • DAQmxチャンネルまたはVISAリソース名などの名前付きrefnum
  • パス

時間の変換コード

変換コード 説明
T 絶対時間Tは、数値またはタイムスタンプ制御器、定数、および表示器の表示形式プロパティ、および「文字列にフォーマット」、「ファイルにフォーマット」、「文字列からスキャン」、「ファイルからスキャン」関数で使用します。
メモ 「配列からスプレッドシート文字列に変換」、「スプレッドシート文字列を配列に変換」、「値をフォーマット」、「値をスキャン」関数では、Tは使用できません。

タイムスタンプを時間以外の形式にすると、エラーが返されます。

t 相対時間。tは、数値またはタイムスタンプ制御器、定数、および表示器の表示形式プロパティ、および「文字列にフォーマット」、「ファイルにフォーマット」、「文字列からスキャン」、「ファイルからスキャン」関数で使用します。
メモ 「配列からスプレッドシート文字列に変換」、「スプレッドシート文字列を配列に変換」、「値をフォーマット」、「値をスキャン」関数では、tは使用できません。

タイムスタンプを時間以外の形式にすると、エラーが返されます。

メモ Tはタイムスタンプと数値を解釈できます。tは数値のみを解釈できます。

ローカリゼーションコード

LabVIEWが小数点とカンマのどちらを使用して、数値の整数を小数点以下の部分と区切るかを決定するオプションのシーケンス。

そのコードは、数値の出力に使用する小数点区切りを制御します。これらのコードにより、入出力は発生しません。また、次の%;が検出されるまで、すべての入出力の小数点区切りを変更します。

表 5. 形式指定子のローカリゼーションコード
ローカリゼーションコード 説明
%,; 小数点区切りとしてのカンマ
%.; 小数点区切りとしてのピリオド
%; システムのデフォルトの区切り区切りを指定しない場合、システムのデフォルト区切りが使用されます。

リテラル文字

入力文字列に文字を追加する場合は、リテラル文字を形式文字列に追加できます。形式文字列でエスケープシーケンスを使用して、特定の文字を挿入できます。

表 6. 形式指定子のエスケープ文字
エスケープシーケンス 出力 説明
%% % 形式指定子の先頭を定義する%デリミタとの競合を回避します。
\> > 組込時間形式修飾子を終了する>デリミタとの競合を回避します。
'\'コード バックスラッシュコードに依存 16進数、スペース、バックスペース、およびその他の形式オプションを指定する文字シーケンスです。

バックスラッシュコードの詳細については、コード表示を参照してください。

形式指定子の構文例

LabVIEW形式指定子が入力引数を出力文字列に変換する方法を、実際のサンプルを使用して理解します。

自動フォーマット (%g) の例

引数 形式文字列 出力文字列
12.00 %#g 12
12000000 %#g 1.2E+7

#を指定すると、後に続くゼロが切り捨てられます。

gを指定すると、LabVIEWはフォーマットする数の指数に基づいて指数関数表記または浮動小数点表記のいずれかを選択します。

10進数 (%d) の例

引数 形式文字列 出力文字列
12.67 score= %d%% score= 13%

%dを指定する際、LabVIEWは整数を10進法形式で表示します。

  • 符号付きまたは符号なしの整数は、ビットサイズに関わらず、修正なしの整数として表示されます。
  • LabVIEWは、浮動小数点値を64ビット符号付き整数に丸め込みます。NaNおよび符号付き64ビット整数の最大値よりも大きい値は、符号付き64ビット整数の最大値である9223372036854775807に丸め込まれます。符号付き64ビット整数の最大値より大きい値を記録するには、「符号なし4倍長整数に変換」関数を使用してそれらの値を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接頭辞を追加します。

16進数 (%x)、8進数 (%o)、バイナリ (%b) の例

引数 形式文字列 出力文字列
12 %02x 0C
12 %06o 000014
12 %b 1100

b (2進数) は2を底とします。o (8進数) は8を底とします。x (16進数) は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を使用できます。
  • 最初の例では、形式文字列は複数の形式指定子を使用します。この結果を得るには、以下を実行します。
    • Smithという姓を入力1として「文字列にフォーマット」関数に指定します。
    • 文字列にフォーマットを展開し、関数の下部をクリック&ドラッグして2番目の入力を追加します。Johnという名を、結果の入力2に指定します。
    • 指定された形式文字列を入力します。形式文字列には2つの%デリミタが含まれるため、形式文字列には2つの形式指定子が含まれます。形式文字列の形式指定子の数は、関数への入力数と一致する必要があります。LabVIEWは、形式指定子の一部でない文字をリテラルテキストとして解釈し、結果の文字列に追加します。
  • 2番目の例では、.6は文字列の精度を制御します。.6は、文字列Hello, Worldから最大6文字を使用することを指定します。10 は幅です。LabVIEW は、文字列の長さの合計が 10 になるように、文字列をスペースでパディングします。

変数順序 (%$) の例

引数 形式文字列 出力文字列
Smith John %2$s %1$s John Smith

この例では、Smithは最初の変数、Johnはが2番目の変数です。

  • 特定の変数に$構文要素を形式文字列で使用する場合、$構文要素が前にない構文要素は次の変数に適用されます。
  • 変数に$を使用する場合の可読性を向上させるには、文字列内の他の変数に$を使用します。

リテラルパーセント文字の例 (%%)

引数 形式文字列 出力文字列
空の引数 %% %

%%は、「文字列にフォーマット」関数または「文字列からスキャン」関数に端子を追加しません。