exponenta event banner

convertContainedStringsToChars

Преобразование строковых массивов на любом уровне массива или структуры ячейки

Описание

Чтобы код мог принимать массивы и структуры ячеек, содержащие строки, в качестве входных аргументов, добавьте вызов convertContainedStringsToChars к началу кода. В этом случае нет необходимости вносить какие-либо другие изменения в код, написанный для работы с массивами ячеек или структурами, содержащими массивы символов.

пример

B = convertContainedStringsToChars(A) преобразует строковые массивы на любом уровне в A.

  • Если A является строковым массивом, то B является символьным вектором или массивом ячеек символьных векторов.

  • Если A представляет собой массив ячеек или структуру, затем строковые массивы в любой ячейке или поле A становятся векторами символов или массивами ячеек векторов символов в B. Все остальные ячейки или поля A не изменяются в B.

  • В противном случае функция возвращает A без изменений.

пример

[B1,...,Bn] = convertContainedStringsToChars(A1,...,An) преобразует входные аргументы A1,...,An. Для каждого входного аргумента должен быть соответствующий выходной аргумент в B1,...,Bn.

Примеры

свернуть все

Создайте массив ячеек, содержащий даты запуска, имена космических аппаратов и посещенные планеты. Некоторые ячейки содержат массивы строк, а другие - нет.

C = {2004,"Messenger","Mercury"; ...
     1977,"Voyager 1",["Jupiter","Saturn"]; ...
     2006,"New Horizons","Pluto"}
C=3×3 cell array
    {[2004]}    {["Messenger"   ]}    {["Mercury"]}
    {[1977]}    {["Voyager 1"   ]}    {1x2 string }
    {[2006]}    {["New Horizons"]}    {["Pluto"  ]}

Преобразование строк в C в векторы символов.

C = convertContainedStringsToChars(C)
C=3×3 cell array
    {[2004]}    {'Messenger'   }    {'Mercury'}
    {[1977]}    {'Voyager 1'   }    {1x2 cell }
    {[2006]}    {'New Horizons'}    {'Pluto'  }

Обратите внимание, что функция преобразует строковый массив ["Jupiter","Saturn"] к массиву ячеек символьных векторов, содержащихся в ячейке C(2,3). Для доступа к содержимому ячейки используйте индексирование фигурной скобки.

C{2,3}
ans = 1x2 cell
    {'Jupiter'}    {'Saturn'}

Создайте структуру, содержащую массивы данных, заголовок и метки для печати. Некоторые поля содержат строки, другие - нет.

S.x = linspace(0,2*pi);
S.y = sin(S.x);
S.title = "y = sin(x)";
S.axislabels = ["x (radians)","y"]
S = struct with fields:
             x: [1x100 double]
             y: [1x100 double]
         title: "y = sin(x)"
    axislabels: ["x (radians)"    "y"]

Преобразование строк в S.

S = convertContainedStringsToChars(S)
S = struct with fields:
             x: [1x100 double]
             y: [1x100 double]
         title: 'y = sin(x)'
    axislabels: {'x (radians)'  'y'}

Обработка произвольного числа входных массивов различных типов.

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

x = linspace(0,2*pi,8);
S.y = sin(x);
S.title = "y = sin(x)";
C = {{sin(x),"y = sin(x)"},{cos(x),"y = cos(x)"}};

Преобразуйте строки и возвращайте все остальные данные без изменений.

[x,S,C] = convertContainedStringsToChars(x,S,C)
x = 1×8

         0    0.8976    1.7952    2.6928    3.5904    4.4880    5.3856    6.2832

S = struct with fields:
        y: [0 0.7818 0.9749 0.4339 -0.4339 -0.9749 -0.7818 -2.4493e-16]
    title: 'y = sin(x)'

C=1×2 cell array
    {1x2 cell}    {1x2 cell}

Отображение содержимого массива ячеек, содержащегося в первой ячейке, C(1). Функция преобразует строки, находящиеся во вложенных ячейках или вложенных структурах, в символьные векторы. Обратите внимание, что векторы символов отображаются с одиночными кавычками.

C{1}
ans=1×2 cell array
    {1x8 double}    {'y = sin(x)'}

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

свернуть все

Входной массив, заданный как массив любого размера или типа данных.

Если A является массивом ячеек или структурой, то он может быть вложен. Ячейка может содержать другой массив ячеек, а структура может иметь поле, являющееся другой структурой. convertContainedStringsToChars преобразует каждый элемент или значение поля, являющееся строкой, в соответствующий символьный вектор или массив ячеек символьных векторов. Функция преобразует каждый элемент или значение поля, используя правила, определенные convertStringsToChars функция, пересекающая каждый уровень и комбинацию вложенных контейнеров.

Представлен в R2018b