exponenta event banner

разделение

Разбить строки в разделителях

Описание

пример

newStr = split(str) делится str через пробел и возвращает результат в виде выходного массива newStr. Входной массив str может быть строковым массивом, символьным вектором или массивом ячеек символьных векторов. Если str является строковым массивом, то так newStr. В противном случае newStr является массивом ячеек символьных векторов. newStr не включает символы пробела из str.

Если str является строковым массивом или массивом ячеек символьных векторов и имеет несколько элементов, тогда каждый элемент должен быть разделен на одно и то же количество подстрок.

  • Если str является строковым скалярным или символьным вектором, то newStr является Nоколо-1 строковый массив или массив ячеек символьных векторов, где N - количество подстрок.

  • Если str является Mоколо-1 строковый массив или массив ячеек, затем newStr является Mоколо-N массив.

  • Если str является 1около-M строковый массив или массив ячеек, затем newStr является 1около-Mоколо-N массив.

Для строкового массива или массива ячеек любого размера: split ориентирует N подстроки вдоль первого конечного размера с размером 1.

Если количество подстрок не совпадает для каждого элемента str, затем позвоните split в for-контур для разделения элементов str по одному.

пример

newStr = split(str,delimiter) делит каждый элемент str на разделителях, указанных delimiter. Продукция newStr не включает разделители.

пример

newStr = split(str,delimiter,dim) делит каждый элемент str в вектор, ориентированный вдоль размера, заданного dim.

пример

[newStr,match] = split(___) дополнительно возвращает массив, match, который содержит все вхождения разделителей, в которых split разделение функций str. Этот синтаксис можно использовать с любым из входных аргументов предыдущих синтаксисов.

Примеры

свернуть все

Разбить имена в массиве строк на пробелы. Затем измените порядок строк и присоедините их так, чтобы фамилии предшествовали первым именам.

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

names = ["Mary Butler";
         "Santiago Marquez";
         "Diana Lee"]
names = 3x1 string
    "Mary Butler"
    "Santiago Marquez"
    "Diana Lee"

При использовании R2016b создайте массивы строк с помощью string функция вместо двойных кавычек.

Разделение names для символов пробела, что делает его строковым массивом 3 на 2.

names = split(names)
names = 3x2 string
    "Mary"        "Butler" 
    "Santiago"    "Marquez"
    "Diana"       "Lee"    

Переключение столбцов names чтобы фамилии были в первом столбце. Добавьте запятую после каждой фамилии.

names = [names(:,2) names(:,1)];
names(:,1) = names(:,1) + ','
names = 3x2 string
    "Butler,"     "Mary"    
    "Marquez,"    "Santiago"
    "Lee,"        "Diana"   

Присоединяйтесь к последней и первой именам. join помещает символ пробела между объединяемыми строками. После присоединения, names является строковым массивом 3 на 1.

names = join(names)
names = 3x1 string
    "Butler, Mary"
    "Marquez, Santiago"
    "Lee, Diana"

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

myPath = "/Users/jdoe/My Documents/Examples"
myPath = 
"/Users/jdoe/My Documents/Examples"

Разделить путь в / персонаж. split прибыль myFolders в виде строкового массива 5 на 1. Первая строка: "" потому что myPath начинается с / персонаж.

myFolders = split(myPath,"/")
myFolders = 5x1 string
    ""
    "Users"
    "jdoe"
    "My Documents"
    "Examples"

Соединение myFolders в новый путь с \ в качестве разделителя. Добавить C: как начало пути.

myNewPath = join(myFolders,"\");
myNewPath = 'C:' + myNewPath
myNewPath = 
"C:\Users\jdoe\My Documents\Examples"

С R2020b г.

Получайте числа из строки, рассматривая текст как разделитель. Используйте шаблон для сопоставления текста. Затем сложите числа.

Сначала создайте строку с числами.

str = "10 apples 3 bananas and 5 oranges"
str = 
"10 apples 3 bananas and 5 oranges"

Затем создайте образец, соответствующий символу или буквам пробела.

pat = " " | lettersPattern
pat = pattern
  Matching:

    " " | lettersPattern

Разделить строку с помощью pat в качестве разделителя. Пустые строки представляют собой разделения между пробелами и последовательностями букв, между которыми больше ничего не было. Например, в "10 apples", перед разделителем имеется разделение " ", а затем между " " и "apples". Поскольку между разделителями нет ничего " " и "apples", split функция возвращает пустую строку, указывающую, что между ними нет ничего.

N = split(str,pat)
N = 11x1 string
    "10"
    ""
    ""
    "3"
    ""
    ""
    ""
    ""
    "5"
    ""
    ""

Удалите пустые строки и сохраните подстроки, представляющие числа.

N = N(strlength(N) > 0)
N = 3x1 string
    "10"
    "3"
    "5"

Наконец, преобразовать N в числовой массив и суммировать по нему.

N = str2double(N);
sum(N)
ans = 18

Список функций, создающих объекты массива, см. в разделе pattern.

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

str = "A horse! A horse! My kingdom for a horse!"
str = 
"A horse! A horse! My kingdom for a horse!"

Разделение str в восклицательных знаках и в пробельных символах. newStr является строковым массивом 10 на 1. Последняя строка является пустой строкой, "", потому что последний символ в str является разделителем.

newStr = split(str,[" ","!"])
newStr = 12x1 string
    "A"
    "horse"
    ""
    "A"
    "horse"
    ""
    "My"
    "kingdom"
    "for"
    "a"
    "horse"
    ""

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

patients = ["LastName,Age,Gender,Height,Weight";
            "Adams,47,F,64,123";
            "Jones,,,68,175";
            "King,,M,66,180";
            "Smith,38,F,63,118"]
patients = 5x1 string
    "LastName,Age,Gender,Height,Weight"
    "Adams,47,F,64,123"
    "Jones,,,68,175"
    "King,,M,66,180"
    "Smith,38,F,63,118"

Разделить строковый массив. Пара запятых, между которыми нет ничего, указывает на отсутствие данных. Когда split делит на повторяющиеся разделители, возвращает пустые строки в качестве соответствующих элементов выходного массива.

patients = split(patients,",")
patients = 5x5 string
    "LastName"    "Age"    "Gender"    "Height"    "Weight"
    "Adams"       "47"     "F"         "64"        "123"   
    "Jones"       ""       ""          "68"        "175"   
    "King"        ""       "M"         "66"        "180"   
    "Smith"       "38"     "F"         "63"        "118"   

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

names = ["Mary Butler";
         "Santiago Marquez";
         "Diana Lee"]
names = 3x1 string
    "Mary Butler"
    "Santiago Marquez"
    "Diana Lee"

Разделите массив на пробелы. По умолчанию split ориентирует выходные подстроки вдоль первого конечного размера размером 1. Поскольку names является строковым массивом 3 на 1, split ориентирует подстроки вдоль второго размера splitNames, то есть колонки.

splitNames = split(names)
splitNames = 3x2 string
    "Mary"        "Butler" 
    "Santiago"    "Marquez"
    "Diana"       "Lee"    

Чтобы ориентировать подстроки вдоль строк или первого размера, укажите размер после указания разделителя. splitNames теперь является строковым массивом 2 на 3, с первыми именами в первой строке и фамилиями во второй строке.

splitNames = split(names," ",1)
splitNames = 2x3 string
    "Mary"      "Santiago"    "Diana"
    "Butler"    "Marquez"     "Lee"  

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

str = "bacon, lettuce, and tomato"
str = 
"bacon, lettuce, and tomato"

Разделение str на разделителях. Возвращает результаты разделения в строковом массиве и разделители во втором строковом массиве. Если между последовательными разделителями нет текста, split возвращает пустую строку.

[newStr,match] = split(str,["and",","," "])
newStr = 7x1 string
    "bacon"
    ""
    "lettuce"
    ""
    ""
    ""
    "tomato"

match = 6x1 string
    ","
    " "
    ","
    " "
    "and"
    " "

Соединение newStr и match обратно вместе с join функция.

originalStr = join(newStr,match)
originalStr = 
"bacon, lettuce, and tomato"

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

свернуть все

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

Выделение подстрок, указанных как одна из следующих:

  • Строковый массив

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

  • Массив ячеек символьных векторов

  • pattern массив (с R2020b года)

Подстроки, указанные в delimiter не появляются в выходных данных newStr.

Укажите несколько разделителей в строковом массиве, массиве ячеек символьных векторов или pattern массив. split разделение функций str по элементам delimiter. Порядок отображения разделителей в delimiter не имеет значения, если несколько разделителей не начинают совпадение с одним и тем же символом в str. В этом случае split функция разделяется на первый соответствующий разделитель в delimiter.

Пример: split(str,{' ',',','--'}) разделения str для пробелов, запятых и пар последовательных тире.

Размер для разделения строк, заданный как положительное целое число. Если dim не указан, то по умолчанию используется последний размер массива с размером, не равным 1.

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

свернуть все

Подстроки, выделенные из исходного массива, возвращаются как строковый массив или массив ячеек символьных векторов. Если входной массив str является строковым массивом, то так newStr. В противном случае newStr является массивом ячеек символьных векторов.

Идентифицированные разделители, возвращаемые как строковый массив или массив ячеек символьных векторов. Если входной массив str является строковым массивом, то так match. В противном случае match является массивом ячеек символьных векторов.

match всегда содержит на один элемент меньше, чем вывод newStr содержит.

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

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