Contenuto principale

strrep

Ricerca e sostituzione di sottostringhe

Descrizione

Nota

replace è consigliato rispetto a strrep in quanto offre una maggiore flessibilità e consente la vettorializzazione. Per ulteriori informazioni, vedere Funzionalità alternative.

newStr = strrep(str,old,new) sostituisce tutte le occorrenze di old in str con new.

Se uno qualsiasi degli argomenti di input è un array di stringhe non scalare o un array di celle di vettori di caratteri, gli altri argomenti di input devono avere dimensioni compatibili.

esempio

Esempi

comprimi tutto

Creare un vettore di caratteri e sostituire una sottostringa al suo interno.

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

Creare un array di stringhe.

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

Sostituire una sottostringa in ciascun elemento dell'array.

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

Sostituire il contenuto del segnaposto in un array di celle '___', con valori diversi in un secondo array di celle.

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'}

Creare un vettore di caratteri con un pattern ripetuto e sovrapposto. Confrontare i risultati utilizzando le funzioni strrep, replace e regexprep per sostituire il pattern.

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

Trovare gli indici del pattern ripetuto '22' utilizzando la funzione strfind. strfind trova tutte le istanze del pattern, comprese quelle sovrapposte.

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

    11    18    19    26    27    28

Sostituire '22' utilizzando strrep. Quando si utilizza strrep, viene sostituita ogni istanza identificata da strfind.

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

Sostituire '22' utilizzando replace. In questo caso, non vengono sostituite tutte le istanze che sostituisce strrep.

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

Sostituire '22' utilizzando regexprep. I risultati sono identici a quelli ottenuti utilizzando la funzione replace.

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

strrep trova tutte le istanze di un pattern prima di sostituire qualsiasi istanza. Tuttavia, le funzioni replace e regexprep sostituiscono un'istanza di un pattern non appena la trovano all'interno del testo.

Argomenti di input

comprimi tutto

Testo di input, specificato come array di stringhe, vettore di caratteri o array di celle di vettori di caratteri.

Tipi di dati: string | char | cell

Sottostringa da sostituire, specificata come array di stringhe, vettore di caratteri o array di celle di vettori di caratteri.

Tipi di dati: string | char | cell

Nuova sottostringa, specificata come array di stringhe, vettore di caratteri o array di celle di vettori di caratteri.

Tipi di dati: string | char | cell

Algoritmi

  • La funzione strrep non trova vettori di caratteri vuoti o stringhe vuote da sostituire. Ossia, quando str e old contengono entrambi il vettore di caratteri vuoto ('') o la stringa vuota (""), strrep non sostituisce i vettori di caratteri vuoti o le stringhe vuote con i contenuti di new.

  • Prima di sostituire il testo, strrep trova tutte le istanze di old in str, come la funzione strfind. Per i pattern sovrapposti, strrep esegue sostituzioni multiple.

Funzionalità alternative

Aggiornare il codice che utilizza strrep in modo da poter invece utilizzare replace. Ad esempio:

Non consigliatoConsigliato
str = "ababa";
newstr = strrep(str,"b","c")
newstr = 

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

    "acaca"

Funzionalità estese

espandi tutto

Cronologia versioni

Introduzione prima di R2006a