создание

Преобразуйте данные в массив отформатированной строки

Синтаксис

str = compose(formatSpec,A)
str = compose(formatSpec,A1,...,AN)
str = compose(txt)

Описание

пример

Значения данных форматов str = compose(formatSpec,A) от входного массива, A, с помощью форматирования операторов, заданных formatSpec и, возвращают получившийся текст в str. Значения форматов функции compose от A в порядке следования столбцов. Если formatSpec является массивом строк, то так выходной массив str. В противном случае str является массивом ячеек из символьных векторов.

compose также переводит последовательности символа ESC в formatSpec. Последовательности символа ESC представляют непечатаемые символы или задают действия, такие как новые строки или вкладки.

Функция compose может возвратить несколько частей форматированного текста как массив строк или массив ячеек из символьных векторов, различающийся sprintf. Функция sprintf возвращает только скаляр строки или вектор символа.

  • Если A имеет несколько строк, то compose возвращает str как массив строк или массив ячеек с тем же количеством строк. compose повторяет formatSpec в каждой строке str с отформатированными значениями из соответствующей строки A.

  • Если количество столбцов в A превышает количество операторов в formatSpec, то compose повторяет formatSpec как дополнительный столбец str. Дополнительные столбцы A вносят отформатированные значения в новый столбец в str.

  • Если количество столбцов в A является меньше, чем количество операторов в formatSpec, то compose не форматирует значения с помощью тех операторов. Вместо этого compose помещает неизменные операторы форматирования в str. Однако compose переводит все последовательности символа ESC за исключением \\ и %%.

Значения данных форматов str = compose(formatSpec,A1,...,AN) от нескольких входных массивов и конкатенируют все отформатированные значения. Когда использование compose, форматирующее операторы от formatSpec, чтобы преобразовать данные от входного массива, затем, те, которые форматируют операторы, становятся недоступными к следующим входным массивам.

Например, если formatSpec является "%f %f %d %s", и A1 имеет два столбца, то операторы "%f %f" применяются к значениям в A1 только. Они не могут быть применены к A2 или любому другому входному массиву. compose применяет остающиеся операторы, "%d %s", к A2,...,AN.

Если количество столбцов в последнем входном массиве, AN, превышает количество остающихся операторов, то compose добавляет дополнительный столбец к str, как описано в предыдущем синтаксисе. Если количество столбцов в AN является меньше, чем количество остающихся операторов, то compose помещает последние неизменные операторы в str.

пример

str = compose(txt) переводит последовательности символа ESC в txt.

  • Если txt не содержит операторы форматирования, то compose переводит все последовательности символа ESC. Это оставляет все другие символы без изменений.

  • Если txt содержит операторы форматирования, то compose переводит все последовательности символа ESC за исключением \\ и %%. Это оставляет все другие символы, включая операторы форматирования, неизменные.

Примеры

свернуть все

Формат pi к восьми десятичным разрядам и возвращает его как строку.

A = pi
A = 3.1416

Начиная в R2017a, можно создать строки с помощью двойных кавычек. Задайте formatSpec как строку.

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

Создайте числовой массив, который содержит значения pi и e. Используйте %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 возвращает массив строк с тем же количеством строк.

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

Начиная в R2017a, можно создать строки с помощью двойных кавычек. Задайте formatSpec как строку и возвратите отформатированные значения как массив строк.

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

Значения формата, когда количество столбцов в массиве данных не равно количеству операторов. Если A имеет больше столбцов, то compose повторяет formatSpec как дополнительный столбец массива выводимой строки.

Начиная в R2017a, можно создать строки с помощью двойных кавычек. Задайте formatSpec как строку.

formatSpec = "The time is %d:%d";
A = [8 15 9 30;
     10 20 11 50];
str = compose(formatSpec,A)
str = 2x2 string array
    "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 array
    "Check-in time 12:27; Check-out time %d:%d"
    "Check-in time 11:16; Check-out time %d:%d"

Поскольку A имеет только два столбца, compose использует только первые два оператора форматирования в formatSpec, чтобы отформатировать значения. compose оставляет другие операторы форматирования без изменений.

Создайте массив строк, который включает последовательности символа ESC, чтобы задать горизонтальные вкладки. Используйте функцию compose, чтобы перевести символы ESC \t. Начиная в R2017a, можно создать строки с помощью двойных кавычек.

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

Предотвратите перевод \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 включает буквенный текст, представляющий символы ESC, такие как \n, то compose переводит символы ESC.

Оператор форматирования

Оператор форматирования запускается со знака процента, %, и заканчивается символом преобразования. Символ преобразования требуется. Опционально, можно задать флаги, ширину поля, точность, и выделить подтипы в операторах между % и символом преобразования. (Пробелы недопустимы между операторами и показаны здесь только для удобочитаемости).

Символ преобразования

Эта таблица показывает символы преобразования, чтобы отформатировать числовые и символьные данные как текст.

Тип значенияПреобразованиеДетали

Целое число, подписанное

%d или %i

Основа 10

Целое число, без знака

U

Основа 10

O

Базируйтесь 8 (восьмеричный)

X

Основывайте 16 (шестнадцатеричных), строчных букв af

X

То же самое как %x, прописные буквы AF

Число с плавающей запятой

F

Представление с фиксированной точкой (Используют оператор точности, чтобы задать количество цифр после десятичной точки.)

E

Экспоненциальное представление, такое как 3.141593e+00 (Используют оператор точности, чтобы задать количество цифр после десятичной точки.)

E

То же самое как %e, но верхний регистр, такой как 3.141593E+00 (Используют оператор точности, чтобы задать количество цифр после десятичной точки.)

G

Более компактный из %e или %f, без конечных нулей (Используют оператор точности, чтобы задать количество значительных цифр.)

G

Более компактный из %E или %f, без конечных нулей (Используют оператор точности, чтобы задать количество значительных цифр.)

'characters'

C

Отдельный символ

S

Символьный вектор

Дополнительные операторы

Дополнительный идентификатор, флаги, ширина поля, точность и операторы подтипа далее задают формат синтезируемого текста.

  • Флаги

    '–'

    Лево-выровнять по ширине.
    Пример 5. 2f

    '+'

    Всегда распечатывайте символ знака (+ или –) для любого значения.
    Пример: % +5.2f

    ' '

    Вставьте пробел перед значением.
    Пример 5. 2f

    '0'

    Заполните к ширине поля нулями перед значением.
    Пример: %05.2f

    '#'

    Измените выбранные числовые преобразования:

    • Для %o %x или %X, распечатывает 0, 0x или префикс 0X.

    • Для %f %e или %E, распечатывает десятичную точку, даже когда точность 0.

    • Для %g или %G, не удаляйте конечные нули или десятичную точку.

    Пример 5. 0f

  • Ширина поля

    Минимальное количество символов, чтобы распечатать.

    Пример: сочините (' %12d', intmax) возвращается "2147483647".

    Функция заполняет к ширине поля пробелами перед значением, если в противном случае не задано флагами.

  • Точность

    Количество цифр, чтобы распечатать.

    Для %f, %e или %E

    Количество цифр справа от десятичной точки
    Пример: '%.4f' распечатывает пи как '3,1416'

    Для %g или %G

    Количество значительных цифр
    Пример: '%.4g' распечатывает пи как '3,142'

    Пример: сочините (' %6.4f', пи) возвращается "3.1416".

    Примечание

    Если вы задаете оператор точности для значений с плавающей точкой, который превышает точность входного типа числовых данных, результаты не могут совпадать с входными значениями к точности, которую вы задали. Результат зависит от вашего компьютерного оборудования и операционной системы.

  • Подтипы

    Можно использовать оператор подтипа, чтобы распечатать значение с плавающей точкой как его восьмеричное, десятичное, или шестнадцатеричное значение. Оператор подтипа сразу предшествует символу преобразования. Эта таблица показывает преобразования, которые могут использовать подтипы.

    Тип входного значения

    Подтип и символ преобразования

    Тип выходного значения

    Число с плавающей запятой

    %bx или %bX
    %bo
    %bu

    С двойной точностью шестнадцатеричное, восьмеричное, или десятичное значение
    Пример: %bx распечатывает пи как 400921fb54442d18

    %tx или %tX
    %to
    %tu

    Шестнадцатеричное, восьмеричное, или десятичное значение с одинарной точностью
    Пример: %tx распечатывает пи как 40490fdb

Известное поведение преобразований с операторами форматирования

  • Числовые преобразования распечатывают только действительный компонент комплексных чисел.

  • Если вы задаете преобразование, которое не соответствует данным, таким как преобразование символов для числового значения, MATLAB® заменяет заданное преобразование и использует %e.

    Пример: '%s' преобразовывает пи в 3.141593e+00.

  • Если вы применяете преобразование строк (%s) к целочисленным значениям, MATLAB преобразовывает значения, которые соответствуют кодам допустимого символа к символам.

    Пример: '%s' преобразовывает [65 66 67] к "ABC".

Типы данных: string | char | cell

Числовой, символ или массив строк, заданный как скаляр, вектор, матрица или многомерный массив.

Типы данных: единственный | удваиваются | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | логический | char | строка

Введите текст, заданный как массив строк, вектор символа или массив ячеек из символьных векторов. compose переводит любые последовательности символа ESC в txt. Например, compose переводит \n в символ новой строки.

Типы данных: string | char | cell

Выходные аргументы

свернуть все

Форматированный текст, возвращенный как массив строк или массив ячеек из символьных векторов.

Типы данных: представьте в виде строки | ячейка

Расширенные возможности

Введенный в R2017b

Была ли эта тема полезной?