Main Content

compose

データを複数の文字列に書式設定

説明

str = compose(formatSpec,A) は、formatSpec で指定された書式演算子を使用して入力配列 A のデータ値の書式を設定し、結果のテキストを str に返します。関数 compose は、列順に A の値の書式を設定します。formatSpec が string 配列の場合、出力配列 str も string 配列となります。それ以外の場合、str は文字ベクトルの cell 配列です。

また、compose は、formatSpec 内のエスケープ文字シーケンスも変換します。エスケープ文字シーケンスは、出力されない文字を表すか、改行やタブなどのアクションを指定します。

関数 compose は、sprintf とは異なり、書式設定された複数のテキストを string 配列または文字ベクトルの cell 配列として返すことができます。関数 sprintf は string スカラーまたは文字ベクトルのみを返します。

  • A に複数の行が含まれる場合、compose は同じ行数の string 配列または cell 配列として str を返します。compose は、A の対応する行からの書式設定された値を使用して、str の各行で formatSpec を繰り返します。

  • A の列数が formatSpec 内の演算子の数を超える場合、composestr の追加列として formatSpec を繰り返します。A の余分な列から書式設定された値が、str の新しい列に配置されます。

  • A の列数が formatSpec 内の演算子の数より小さい場合、compose は、値の書式設定に余分な演算子を使用しません。代わりに、compose は書式演算子を変更せずに str に配置します。ただし、compose は、\\%% を除く、すべてのエスケープ文字シーケンスを変換します。

str = compose(formatSpec,A1,...,AN) は、複数の入力配列のデータ値を書式設定し、すべての書式設定された値を連結します。compose が入力配列のデータの変換に使用した formatSpec の書式演算子は、後続の入力配列では使用できなくなります。

たとえば、formatSpec"%f %f %d %s" で、A1 が 2 列である場合、演算子 "%f %f"A1 の値のみに適用されます。A2 やその他の入力配列にはそれらを適用できません。compose は、残りの演算子 "%d %s"A2,...,AN に適用します。

最後の入力配列 AN の列数が残りの演算子の数を超えている場合、compose は、前述の構文で説明したように、str に列を追加します。AN の列数が残りの演算子の数より小さい場合は、compose は最後に残った演算子を変更せずに str に配置します。

str = compose(txt) は、txt 内のエスケープ文字シーケンスを変換します。

  • txt に書式演算子が含まれない場合、compose はすべてのエスケープ文字シーケンスを変換します。その他すべての文字は変更せずに残します。

  • txt に書式演算子が含まれる場合、compose は、\\%% を除くすべてのエスケープ文字シーケンスを変換します。書式演算子を含めて、その他すべての文字は変更せずに残します。

すべて折りたたむ

pi を小数点以下 8 桁に書式設定し、string として返します。

A = pi
A = 3.1416

string は二重引用符を使用して作成できます。formatSpec を string として指定します。

formatSpec = "%.8f"
formatSpec = 
"%.8f"
str = compose(formatSpec,A)
str = 
"3.14159265"

pie の値を含む数値配列を作成します。異なる精度で %e および %f の演算子を使用します。

A = [pi exp(1)]
A = 1×2

    3.1416    2.7183

formatSpec = "The value of pi is %.2e; the value of e is %.5f.";
str = compose(formatSpec,A)
str = 
"The value of pi is 3.14e+00; the value of e is 2.71828."

数値配列から取得した値を書式設定します。数値配列には複数の行があるため、compose は、同じ行数の string 配列を返します。

X = [1 2 3 4 5]';
Y = X.^2;

string は二重引用符を使用して作成できます。formatSpec を string として指定し、書式設定された値を string 配列として返します。

formatSpec = "%d.^2 = %d";
str = compose(formatSpec,X,Y)
str = 5x1 string
    "1.^2 = 1"
    "2.^2 = 4"
    "3.^2 = 9"
    "4.^2 = 16"
    "5.^2 = 25"

データ配列の列数が演算子の数と等しくない場合に、値を書式設定します。A の列数が多い場合、compose は、出力 string 配列の追加列として、formatSpec を繰り返します。

string は二重引用符を使用して作成できます。formatSpec を string として指定します。

formatSpec = "The time is %d:%d";
A = [8 15 9 30;
     10 20 11 50];
str = compose(formatSpec,A)
str = 2x2 string
    "The time is 8:15"     "The time is 9:30" 
    "The time is 10:20"    "The time is 11:50"

A の列数が少ない場合に、値を書式設定します。

formatSpec = "Check-in time %d:%d; Check-out time %d:%d";
A = [12 27;
     11 16];
str = compose(formatSpec,A)
str = 2x1 string
    "Check-in time 12:27; Check-out time %d:%d"
    "Check-in time 11:16; Check-out time %d:%d"

A は 2 列のみのため、composeformatSpec の最初の 2 つの書式演算子のみを使用して値を書式設定します。compose は、その他の書式演算子を変更せずに残します。

エスケープ文字シーケンスを含む string 配列を作成し、水平タブを指定します。関数 compose を使用して、\t エスケープ文字を変換します。string は二重引用符を使用して作成できます。

str = ["Name\tDate of Birth\tLocation";...
       "Jones\t10/20/2015\tUK";...
       "Simpson\t09/12/2015\tUSA"];
newStr = compose(str)
newStr = 3x1 string
    "Name->Date of Birth->Location"
    "Jones->10/20/2015->UK"
    "Simpson->09/12/2015->USA"

もう 1 つ \ 文字を使用して、\n の変換を回避します。

str = "Don't escape the second\n\\n escaped-character sequence.";
newStr = compose(str)
newStr = 
    "Don't escape the second
     \n escaped-character sequence."

入力引数

すべて折りたたむ

出力フィールドの書式。書式演算子を使用して指定します。formatSpec には通常のテキストおよび特殊文字を含めることもできます。

formatSpec\n などのエスケープ文字を表すリテラル テキストが含まれる場合、compose はエスケープ文字を変換します。

formatSpec には、一重引用符で囲まれた文字ベクトル、または string スカラーに含まれる書式指定子の配列を使用できます。

書式演算子

書式演算子はパーセント記号 % で始まり、変換文字で終わります。変換文字は必須です。オプションとして、% と変換文字の間にフラグ、フィールド幅、精度およびサブタイプ演算子を指定できます。

変換文字

次の表では、数値データおよび文字データをテキストとして書式設定するための変換文字を説明します。

値のタイプ変換詳細

整数、符号付き

%d または %i

基数 10

整数、符号なし

%u

基数 10

%o

基数 8 (8 進法)

%x

基数 16 (16 進法)、小文字 af

%X

%x と同じ、大文字 AF

浮動小数点数

%f

固定小数点表記 (小数点以下の桁数の指定には精度演算子を使用)

%e

3.141593e+00 などの指数表現 (小数点以下の桁数の指定には精度演算子を使用)

%E

%e と同じだが、3.141593E+00 のように大文字 (小数点以下の桁数の指定には精度演算子を使用)

%g

%e または %f をコンパクトにしたもので、後続のゼロなし (有効桁数の指定には精度演算子を使用)

%G

%E または %f をコンパクトにしたもので、後続のゼロなし (有効桁数の指定には精度演算子を使用)

文字または文字列

%c

単一の文字

%s

文字ベクトルまたは string 配列。出力テキストのタイプは formatSpec のタイプと同じです。

オプションの演算子

オプションのフラグ、フィールド幅、精度およびサブタイプ演算子により、出力テキストの書式をさらに細かく定義します。

  • フラグ

    '–'

    左揃えします。
    例: %-5.2f
    例: %-10s

    '+'

    常に数値の符号文字 (+ または –) を出力します。
    例: %+5.2f
    テキストを右揃えします。
    例: %+10s

    ' '

    値の前にスペースを 1 つ挿入します。
    例: % 5.2f

    '0'

    値の前にゼロを入れてフィールド幅をパディングします。
    例: %05.2f

    '#'

    選択した数値変換を次のように変更します。

    • %o%x、または %X の場合は、接頭辞 00x、または 0X を出力します。

    • %f%e、または %E の場合は、精度が 0 であっても小数点を出力します。

    • %g または %G の場合は、後続のゼロまたは小数点を削除しないでください。

    例: %#5.0f

  • フィールド幅

    出力する最小文字数。

    例: '%5d'intmax で返される値が出力する最小文字数を超えているため、intmax 2147483647 として出力します。

    出力する文字数がフィールド幅より少ない場合、フラグで特に指定されていない限り、関数 compose は値の前にスペースを追加してフィールド幅までパディングします。

    ただし、関数 num2str はスペースを追加してフィールド幅をパディングしません。

  • 精度

    出力する桁数。

    %f%e または %E

    小数点以下の桁数
    例: '%.4f'pi'3.1416' と出力します

    %g または %G

    有効桁数
    例: '%.4g'pi'3.142' と出力します。

    例: '%6.4f'pi'3.1416' として出力します。

    メモ

    浮動小数点値の精度演算子を入力の数値データ型の精度より大きい値に指定すると、入力値の精度が指定の精度にならない場合があります。結果はコンピューターのハードウェアとオペレーティング システムによって異なります。

  • サブタイプ

    サブタイプ演算子を使用して、浮動小数点値を 8 進数、10 進数または 16 進数の値として出力できます。サブタイプ演算子は、変換文字の直前に指定します。次の表では、サブタイプを使用できる変換を示します。

    入力値の型

    サブタイプと変換文字

    出力値の型

    浮動小数点数

    %bx または %bX
    %bo
    %bu

    16 進数、8 進数または 10 進数の倍精度値
    例: %bxpi400921fb54442d18 と出力します

    %tx または %tX
    %to
    %tu

    16 進数、8 進数または 10 進数の単精度値
    例: %txpi40490fdb と出力します

書式演算子の前後のテキスト

formatSpec では、パーセント記号 % の前や、変換文字の後に追加のテキストを含めることができます。次のテキストを追加できます。

  • 出力する通常のテキスト。

  • 通常のテキストとして入力できない特殊文字。次の表では、formatSpec で特殊文字を表す方法を説明します。

    特殊文字

    表現

    一重引用符

    ''

    パーセント文字

    %%

    バックスラッシュ

    \\

    アラーム

    \a

    バックスペース

    \b

    フォーム フィード

    \f

    改行

    \n

    キャリッジ リターン

    \r

    水平タブ

    \t

    垂直タブ

    \v

    Unicode® 数値を 16 進数 N で表現できる文字

    \xN

    例: compose('\x5A')'Z' を返す

    Unicode 数値を 8 進数 N で表現できる文字

    \N

    例: compose('\132')'Z' を返す

書式演算子を使用した変換動作の注意点

  • 数値変換は複素数の実数部のみを出力します。

  • 数値のテキスト変換など、データに適さない変換を指定すると、MATLAB® は指定した変換をオーバーライドし、%e を使用します。

    例: '%s' は、pi3.141593e+00 に変換します。

  • 整数値にテキスト変換 (%c または %s) を適用する場合、MATLAB は有効な文字コードに対応する値を文字に変換します。

    例: '%s' は、[65 66 67]ABC に変換します。

数値、文字または string 配列。スカラー、ベクトル、行列または多次元配列として指定します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string

入力テキスト。string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。compose は、txt 内のエスケープ文字シーケンスをすべて変換します。たとえば、compose\n を改行文字に変換します。

データ型: string | char | cell

出力引数

すべて折りたたむ

書式設定されたテキスト。string 配列、または文字ベクトルの cell 配列として返されます。

データ型: string | cell

拡張機能

バージョン履歴

R2016b で導入