split

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

Описание

пример

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 содержит.

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

Введенный в R2017b