主要内容

组成

将数据格式化为多个字符串

描述

例子

str=组成(formatSpec一个格式化输入数组中的数据值,一个,使用指定的格式化操作符formatSpec并返回结果文本str.的组成函数从一个按列排序。如果formatSpec是字符串数组,那么输出数组也是str.否则,str是字符向量的单元格数组。

组成还将转义字符序列转换为formatSpec.转义字符序列表示非打印字符或指定换行符或制表符等操作。

组成函数可以返回多个格式化文本片段作为字符串数组或字符向量的单元格数组,而不像sprintf.的sprintf函数只返回一个字符串标量或字符向量。

  • 如果一个那么有多行组成返回str作为具有相同行数的字符串数组或单元格数组。组成重复formatSpec在每一行str的对应行中的格式化值一个

  • 如果中的列数一个中的操作符数formatSpec,然后组成重复formatSpec作为的附加列str.的额外列一个中的新列贡献格式化值str

  • 如果中的列数一个小于运算符的个数formatSpec,然后组成不使用这些运算符格式化值。相反,组成放入未更改的格式化操作符str.然而,组成翻译所有转义字符序列,除了\ \而且% %

str=组成(formatSpecA1,…)格式化来自多个输入数组的数据值,并连接所有格式化的值。当组成使用格式化操作符formatSpec若要从输入数组转换数据,则这些格式化操作符对以下输入数组不可用。

例如,如果formatSpec"%f %f %d %s"而且A1有两列,然后是运算符“% % f”应用于?中的值A1只有。它们不能被应用A2或者任何其他输入数组。组成应用剩下的运算符,“% d % s”,A2,…,一个

如果最后一个输入数组中的列数,一个,则超过剩余的操作符数组成将附加列添加到str,如前面的语法所述。如果中的列数一个小于剩余的操作符数,那么组成将最后一个未更改的操作符放入str

例子

str=组成(三种转换转义字符序列三种

  • 如果三种不包含格式化操作符,那么组成翻译所有转义字符序列。它保持所有其他字符不变。

  • 如果三种然后,包含格式化操作符组成翻译所有转义字符序列,除了\ \而且% %.它保持所有其他字符(包括格式化操作符)不变。

例子

全部折叠

格式π到小数点后8位,然后以字符串形式返回。

A =
A = 3.1416

可以使用双引号创建字符串。指定formatSpec作为字符串。

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

创建包含值的数值数组π而且e.使用% e而且% f不同精度的运算符。

A = [pi exp(1)]
一个=1×23.1416 - 2.7183
formatSpec =圆周率的值是%.2e;e的值是%.5f。”;str = compose(formatSpec,A)
str = "圆周率值为3.14e+00;e的值是2.71828。”

格式化从数值数组中获取的值。由于数字数组有多行,组成返回具有相同行数的字符串数组。

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

可以使用双引号创建字符串。指定formatSpec作为字符串,并将格式化后的值作为字符串数组返回。

formatSpec =“% d。^2 = %d";str = compose(formatSpec,X,Y)
str =5 x1字符串“1。^2 = 1" "2。^2 = 4" "3。^2 = 9" "4。^2 = 16" "^2 = 25"

当数据数组中的列数不等于操作符数时,格式化值。如果一个有更多的专栏吗组成重复formatSpec作为输出字符串数组的附加列。

可以使用双引号创建字符串。指定formatSpec作为字符串。

formatSpec =时间是%d:%d;A = [8 15 9 30;10 20 11 50];str = compose(formatSpec,A)
str =2 x2的字符串“时间是8:15”“时间是9:30”“时间是10:20”“时间是11:50”

格式化值时一个列数较少。

formatSpec =“签入时间%d:%d;退房时间%d:%d";A = [12 27;11日16);str = compose(formatSpec,A)
str =2 x1字符串“登记时间12:27;退房时间%d:%d" "退房时间11:16;退房时间%d:%d"

一个只有两列,组成中只使用前两个格式化操作符formatSpec格式化值。组成保持其他格式化操作符不变。

创建包含转义字符序列的字符串数组,以指定水平制表符。使用组成函数来翻译\ t转义字符。可以使用双引号创建字符串。

STR = [“姓名、出生日期、地点”...”琼斯\ t10/20/2015 \ tUK”...“辛普森\ t09/12/2015 \图萨”];newStr = compose(str)
newStr =3 x1字符串“姓名->出生日期->地点”“琼斯->10/20/2015->英国”“辛普森->09/12/2015->美国”

防止翻译\ n使用另一个的性格。

str =“不要转义第二个n个转义字符序列。”;newStr = compose(str)
newStr = "不要转义第二个n个转义字符序列。"

输入参数

全部折叠

输出字段的格式,使用格式化操作符指定。formatSpec也可以包括普通文本和特殊字符。

如果formatSpec包括表示转义字符的文本,例如\ n,然后组成翻译转义字符。

formatSpec可以是包含在单引号字符向量中的格式说明符数组,也可以是字符串标量。

格式化操作符

格式化操作符以百分号开头,% gydF4y2Ba,并以转换字符结束。转换字符是必需的。可选地,您可以指定之间的标志、字段宽度、精度和子类型操作符% gydF4y2Ba以及转换字符。

转换字符

此表显示将数字和字符数据格式化为文本的转换字符。

值类型 转换 细节

整数,签署了

% d%我

以10为底的

整数,无符号

% u

以10为底的

%啊

8进制(八进制)

% x

以16为基数(十六进制),小写字母一个- - - - - -f

% X

一样% x,大写字母一个- - - - - -F

浮点数

% f

定点记数法(使用精确运算符指定小数点后的位数。)

% e

指数符号,例如3.141593 e + 00(使用精确运算符指定小数点后的位数。)

% E

一样% e,但大写,如3.141593 e + 00(使用精确运算符指定小数点后的位数。)

% g

更紧凑的% e% f,不带后面的零(使用精确运算符指定有效数字的数量。)

% G

更紧凑的% E% f,不带后面的零(使用精确运算符指定有效数字的数量。)

字符或字符串

% c

单个字符

% s

字符向量或字符串数组。的类型与输出文本的类型相同formatSpec

可选的运营商

可选标志、字段宽度、精度和子类型操作符进一步定义了输出文本的格式。

  • 旗帜

    “- - -”

    对齐。
    例子:% -5.2度
    例子:% -10年代

    “+”

    对于任何数值,总是打印一个符号字符(+或-)。
    例子:% + 5.2 f
    文本对齐。
    例子:% + 10 s

    ' '

    在值之前插入一个空格。
    例子:% 5.2度

    ' 0 '

    填充到字段宽度,值前为零。
    例子:% 05.2度

    “#”

    修改选定的数值转换:

    • %啊% x,或% X、打印00 x,或0 x前缀。

    • % f% e,或% E,即使精度为0,也可打印小数点。

    • % g% G,不移除尾随零或小数点。

    例子:% # 5.0度

  • 字段宽度

    打印的最小字符数。

    例子:' % 5 d '打印intmax作为2147483647因为返回的值intmax超过要打印的最小字符数。

    如果要打印的字符数小于字段宽度,则组成除非flags另有指定,否则函数将填充字段宽度,在值前加空格。

    然而,num2str函数不将字段宽度填充为空格。

  • 精度

    要打印的数字数。

    % f% e,或% E

    小数点右边的位数
    例子:“% .4f”打印π作为“3.1416”

    % g% G

    有效位数
    例子:“% .4g”打印π作为“3.142”

    例子:' % 6.4 f '打印π作为“3.1416”

    请注意

    如果为浮点值指定的精度操作符超过输入数值数据类型的精度,则结果可能与输入值的精度不匹配。结果取决于您的计算机硬件和操作系统。

  • 子类型

    可以使用子类型操作符将浮点值打印为其八进制、十进制或十六进制值。子类型操作符紧接在转换字符的前面。下表显示了可以使用子类型的转换。

    输入值类型

    子类型和转换字符

    输出值类型

    浮点数

    % bx% bX
    %博
    % bu

    双精度十六进制、八进制或十进制值
    例子:% bx打印π作为400921 fb54442d18

    % tx% tX
    %,
    %你

    单精度十六进制、八进制或十进制值
    例子:% tx打印π作为40490身上

格式化操作符之前或之后的文本

formatSpec还可以在百分号之前包含额外的文本,% gydF4y2Ba,或转换字符后。文本可以是:

  • 普通文字打印。

  • 不能作为普通文本输入的特殊字符。此表显示了如何在中表示特殊字符formatSpec

    特殊字符

    表示

    单引号

    百分比的性格

    % %

    反斜杠

    \ \

    报警

    、一个

    退格

    \ b

    换页

    \ f

    新行

    \ n

    回车

    r \

    水平选项卡

    \ t

    垂直制表符

    v \

    Unicode字符®数值可以用十六进制数表示,N

    \ xN

    例子:组成(“\ x5A”)返回“Z”

    Unicode数值可以用八进制数表示的字符。N

    \ N

    例子:组成(\ 132 ')返回“Z”

格式化操作符转换的显著行为

  • 数值转换只输出复数的实分量。

  • 如果指定的转换不适合数据,例如数值的文本转换,请使用MATLAB®重写指定的转换,并使用% e

    例子:' % s '转换π3.141593 e + 00

  • 如果应用文本转换(或% c% s)转换为整数值,MATLAB将对应于有效字符代码的值转换为字符。

    例子:' % s '转换[65 66 67]美国广播公司

数值、字符或字符串数组,指定为标量、向量、矩阵或多维数组。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑|字符|字符串

输入文本,指定为字符串数组、字符向量或字符向量的单元格数组。组成翻译任何转义字符序列三种.例如,组成翻译\ n转换成换行符。

数据类型:字符串|字符|细胞

输出参数

全部折叠

格式化的文本,作为字符串数组或字符向量的单元格数组返回。

数据类型:字符串|细胞

扩展功能

版本历史

在R2016b中引入