strrep

Поиск и замена подстрок

Описание

пример

newStr = strrep(str,old,new) заменяет все вхождения old в str с new.

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

Примеры

свернуть все

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

chr = 'The quick brown fox'
chr = 
'The quick brown fox'
newChr = strrep(chr,'quick','sly')
newChr = 
'The sly brown fox'

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

str = ["the quick brown fox";
       "and the lazy dog"]
str = 2x1 string
    "the quick brown fox"
    "and the lazy dog"

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

newStr = strrep(str,'the','a')
newStr = 2x1 string
    "a quick brown fox"
    "and a lazy dog"

Замените содержимое заполнителя в массиве ячеек, '___', с различными значениями во втором массиве ячеек.

C1 = {'Date Received: ___';
      'Date Accepted: ___'};
old = '___';
new = {'2016-09-06';
       '2016-10-11'};
C2 = strrep(C1,old,new)
C2 = 2x1 cell
    {'Date Received: 2016-09-06'}
    {'Date Accepted: 2016-10-11'}

Создайте вектор символов с повторяющимся, перекрывающимся шаблоном. Сравните результаты использования strrep, replace, и regexprep функций для замены шаблона.

repeats = 'abc 2 def 22 ghi 222 jkl 2222'
repeats = 
'abc 2 def 22 ghi 222 jkl 2222'

Найдите индексы повторяющегося шаблона '22' использование strfind функция. strfind находит все образцы шаблона, включая образцы, которые перекрываются.

indices = strfind(repeats, '22')
indices = 1×6

    11    18    19    26    27    28

Замените '22' использование strrep. Когда вы используете strrep, он заменяет каждый образец, идентифицированный как strfind.

using_strrep = strrep(repeats, '22', '*')
using_strrep = 
'abc 2 def * ghi ** jkl ***'

Замените '22' использование replace. Он не заменяет каждый образец, который strrep заменяет.

using_replace = replace(repeats, '22', '*')
using_replace = 
'abc 2 def * ghi *2 jkl **'

Замените '22' использование regexprep. Результаты идентичны результатам с помощью replace функция.

using_regexprep = regexprep(repeats, '22', '*')
using_regexprep = 
'abc 2 def * ghi *2 jkl **'

strrep находит все образцы шаблона перед заменой любого образца. Однако replace и regexprep функции заменяют образец шаблона, как только они находят его в тексте.

Входные параметры

свернуть все

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

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

Подстрока для замены, заданная как строковые массивы, вектор символов или массив ячеек из векторов символов.

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

Новая подстрока, заданная как строковые массивы, вектор символов или массив ячеек из векторов символов.

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

Алгоритмы

  • The strrep функция не находит пустые символьные векторы или пустые строки для замены. То есть, когда str и old оба содержат пустой символьный вектор ('') или пустую строку (""), strrep не заменяет пустых символьных векторов или строки содержимым new.

  • Перед заменой текста strrep находит все образцы old в str, как и strfind функция. Для перекрывающихся шаблонов, strrep выполняет несколько замен.

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

.
Представлено до R2006a