exponenta event banner

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

Алгоритмы

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

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

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

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