exponenta event banner

replaceBetween

Заменить подстроки между начальной и конечной точками

Описание

пример

newStr = replaceBetween(str,startPat,endPat,newText) заменяет подстроки в str с текстом в newText. Заменяемые подстроки находятся между подстроками startPat и endPat. Однако replaceBetween не заменяет startPat и endPat сами. replaceBetween возвращает результат как newStr. newText аргумент может содержать не столько символов, сколько заменяемая подстрока.

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

пример

newStr = replaceBetween(str,startPos,endPos,newText) заменяет подстроки в str. Заменяемые подстроки располагаются между позициями startPos и endPos в str, включая символы на этих позициях.

пример

newStr = replaceBetween(___,'Boundaries',bounds) приводит к тому, что начальные и конечные значения, указанные в любом из предыдущих синтаксисов, являются либо инклюзивными, либо эксклюзивными. Они являются инклюзивными, когда bounds является 'inclusive', и эксклюзивно, когда bounds является 'exclusive'. Например, replaceBetween(str,startPat,endPat,newText,'Boundaries','inclusive') заменяет startPat, endPatи весь текст между ними с текстом, указанным newText.

Примеры

свернуть все

Создание массива строк и замена текста между подстроками.

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

str = "The quick brown fox"
str = 
"The quick brown fox"

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

Заменить текст между подстроками quick и fox. replaceBetween функция заменяет текст, но не заменяет quick или fox в выходных данных.

newStr = replaceBetween(str,"quick "," fox","red")
newStr = 
"The quick red fox"

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

str = ["The quick brown fox jumps";"over the lazy dog"]
str = 2x1 string
    "The quick brown fox jumps"
    "over the lazy dog"

newText = ["red";"sleeping"];
newStr = replaceBetween(str,["quick ";"the "],[" fox";" dog"],newText)
newStr = 2x1 string
    "The quick red fox jumps"
    "over the sleeping dog"

С R2020b г.

Создание сокращений, таких как "i18n" для "internationalization". Для этого замените текст между первой и последней буквами слова на число букв.

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

str = ["globalization";
       "internationalization";
       "localization"]
str = 3x1 string
    "globalization"
    "internationalization"
    "localization"

Создание шаблонов, соответствующих первому и последнему символам строки. textBoundary функция соответствует границам в начале или конце строки, в то время как вызов lettersPattern(1) соответствует любой букве.

startPat = textBoundary + lettersPattern(1)
startPat = pattern
  Matching:

    textBoundary + lettersPattern(1)

endPat = lettersPattern(1) + textBoundary
endPat = pattern
  Matching:

    lettersPattern(1) + textBoundary

Найти длину каждой строки в str. Чтобы учесть первую и последнюю буквы, вычтите две из каждой длины. Преобразование длин в строки.

L = strlength(str) - 2;
L = string(L)
L = 3x1 string
    "11"
    "18"
    "10"

Создание сокращений для элементов str. Заменить символы между первой и последней буквами элементами L.

newStr = replaceBetween(str,startPat,endPat,L)
newStr = 3x1 string
    "g11n"
    "i18n"
    "l10n"

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

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

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

str = "Edgar Allen Poe"
str = 
"Edgar Allen Poe"
newStr = replaceBetween(str,7,11,'A.')
newStr = 
"Edgar A. Poe"

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

str = ["Edgar Allen Poe";"Louisa May Alcott"]
str = 2x1 string
    "Edgar Allen Poe"
    "Louisa May Alcott"

newText = ["A.";"M."];
newStr = replaceBetween(str,[7;8],[11;10],newText)
newStr = 2x1 string
    "Edgar A. Poe"
    "Louisa M. Alcott"

Замена текста в строковых массивах в пределах границ, которые должны быть инклюзивными или исключительными. replaceBetween заменяет границы вместе с текстом, если границы включены. replaceBetween не заменяет границы, если границы являются исключительными.

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

str = "small|medium|large"
str = 
"small|medium|large"

Замените текст между шестым и 13-м позициями, но не заменяйте символы на этих позициях.

newText = "regular";
newStr = replaceBetween(str,6,13,newText,'Boundaries','exclusive')
newStr = 
"small|regular|large"

Замените текст между двумя подстроками, а также сами подстроки.

str = "The quick brown fox jumps over the lazy dog"
str = 
"The quick brown fox jumps over the lazy dog"
newText = "red bird flies";
newStr = replaceBetween(str,'brown','jumps',newText,'Boundaries','inclusive')
newStr = 
"The quick red bird flies over the lazy dog"

Создайте вектор символов и замените текст между начальной и конечной позициями.

chr = 'mushrooms, peppers, and onions'
chr = 
'mushrooms, peppers, and onions'
newChr = replaceBetween(chr,12,18,'pineapple')
newChr = 
'mushrooms, pineapple, and onions'

Заменить текст между подстроками.

newChr = replaceBetween(chr,'mushrooms,',' and',' extra cheese,')
newChr = 
'mushrooms, extra cheese, and onions'

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

свернуть все

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

Текст или узор, обозначающий начальную позицию заменяемого текста, указанный следующим образом:

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

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

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

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

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

  • Для указания того же самого начала укажите startPat в виде символьного вектора, строкового скаляра или pattern объект.

  • Для указания различных стартов укажите startPat в виде строкового массива, массива ячеек символьных векторов или pattern массив.

Пример: replaceBetween(str,"AB","YZ",newText) заменяет подстроку между AB и YZ в каждом элементе str с текстом, указанным newText.

Пример: Если str является 2около-1 строковый массив, затем replaceBetween(str,["AB";"FG"],["YZ";"ST"],newText) заменяет подстроки между AB и YZ в str(1), и между FG и ST в str(2).

Текст или узор, обозначающий конечную позицию заменяемого текста, указанный следующим образом:

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

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

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

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

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

  • Чтобы указать тот же конец, укажите endPat в виде символьного вектора, строкового скаляра или pattern объект.

  • Чтобы указать разные концы, укажите endPat в виде строкового массива, массива ячеек символьных векторов или pattern массив.

Пример: replaceBetween(str,"AB","YZ",newText) заменяет подстроку между AB и YZ в каждом элементе str с текстом, указанным newText.

Пример: Если str является 2около-1 строковый массив, затем replaceBetween(str,["AB";"FG"],["YZ";"ST"],newText) заменяет подстроки между AB и YZ в str(1), и между FG и ST в str(2).

Начальная позиция, заданная как числовой массив.

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

Пример: replaceBetween(str,5,9,newText) заменяет подстроку с пятой по девятую позиции в каждом элементе str с текстом, указанным newText.

Пример: Если str является 2около-1 строковый массив, затем replaceBetween(str,[5;10],[9;21],newText) заменяет подстроку с пятой по девятую позиции в str(1)и 10-21 позиции в str(2).

Конечная позиция, заданная как числовой массив.

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

Пример: replaceBetween(str,5,9,newText) заменяет подстроку с пятой по девятую позиции в каждом элементе str с текстом, указанным newText.

Пример: Если str является 2около-1 строковый массив, затем replaceBetween(str,[5;10],[9;21],newText) заменяет подстроку с пятой по девятую позиции в str(1)и 10-21 позиции в str(2).

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

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

Пример: replaceBetween(str,"AB","YZ","efg") заменяет подстроку между AB и YZ в каждом элементе str с efg.

Пример: Если str является 2около-1 строковый массив, затем replaceBetween(str,["AB";"FG"],["YZ";"ST"],["efg";"lmnop"]) заменяет подстроки между AB и YZ в str(1) с efg, и между FG и ST в str(2) с lmnop.

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

свернуть все

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

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

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