Hauptinhalt

strrep

Suchen und Ersetzen von Substrings

Beschreibung

Hinweis

Statt strrep wird replace empfohlen, da die Funktion mehr Flexibilität bietet und Vektorisierung erlaubt. Weitere Informationen finden Sie unter Alternative Funktionen.

newStr = strrep(str,old,new) ersetzt alle Vorkommen von old in str durch new.

Wenn sich unter den Eingabeargumenten ein nicht-skalares String Array oder Zellenarray aus Zeichenvektoren befindet, müssen die weiteren Eingabeargumente kompatible Größen aufweisen.

Beispiel

Beispiele

alle reduzieren

Erstellen Sie einen Zeichenvektor und ersetzen Sie einen Substring in diesem Vektor.

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

Erstellen Sie ein String Array.

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

Ersetzen Sie einen Substring in jedem Element des Arrays.

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

Ersetzen Sie Platzhalter-Inhalte in einem Zellenarray '___' durch andere Werte in einem zweiten Zellenarray.

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

Erstellen Sie einen Zeichenvektor mit einem wiederholten, überlappenden Muster. Verwenden Sie die Funktionen strrep, replace und regexprep, um das Muster zu ersetzen und vergleichen Sie die Ergebnisse.

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

Suchen Sie die Indizes des wiederholten Musters '22' mithilfe der Funktion strfind. strfind findet alle Vorkommen des Musters, einschließlich überlappender Instanzen.

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

    11    18    19    26    27    28

Ersetzen Sie '22' mithilfe von strrep. Wenn Sie strrep verwenden, wird jede von strfind gefundene Instanz ersetzt.

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

Ersetzen Sie '22' mithilfe von replace. Hierbei wird nicht jede Instanz ersetzt, die strrep ersetzt.

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

Ersetzen Sie '22' mithilfe von regexprep. Die Ergebnisse sind identisch zu den Ergebnissen der Funktion replace.

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

strrep findet alle Instanzen eines Musters, bevor eine Instanz ersetzt wird. Die Funktionen replace und regexprep ersetzen hingegen eine Instanz eines Musters, sobald sie diese im Text finden.

Eingabeargumente

alle reduzieren

Eingabetext, angegeben als String Array, Zeichenvektor oder Zellenarray aus Zeichenvektoren.

Datentypen: string | char | cell

Zu ersetzender Substring, angegeben als String Array, Zeichenvektor oder Zellenarray aus Zeichenvektoren.

Datentypen: string | char | cell

Neuer Substring, angegeben als String Array, Zeichenvektor oder Zellenarray aus Zeichenvektoren.

Datentypen: string | char | cell

Algorithmen

  • Die Funktion strrep findet beim Suchen und Ersetzen keine leere Zeichenvektoren oder leere Strings. Das bedeutet: Wenn sowohl str als auch old den leeren Zeichenvektor ('') oder den leeren String ("") enthalten, ersetzt strrep keine leeren Zeichenvektoren oder Strings mit dem Inhalt von new.

  • Wie die Funktion strfind findet strrep alle Instanzen von old in str, bevor Text ersetzt wird. Bei überlappenden Mustern führt strrep mehrere Ersetzungen durch.

Alternative Funktionen

Ändern Sie Code, der strrep verwendet, um stattdessen replace zu verwenden. Beispiel:

Nicht empfohlenEmpfohlen
str = "ababa";
newstr = strrep(str,"b","c")
newstr = 

    "acaca"
str = "ababa";
newstr = replace(str,"b","c")
newstr = 

    "acaca"

Erweiterte Fähigkeiten

alle erweitern

Versionsverlauf

Eingeführt vor R2006a