Main Content

strrep

Buscar y reemplazar subcadenas

Descripción

Nota

Se recomienda replace en lugar de strrep porque proporciona una mayor flexibilidad y permite la vectorización. Para obtener más información, consulte Funcionalidad alternativa.

newStr = strrep(str,old,new) sustituye todas las instancias de old en str por new.

Si algún argumento de entrada es un arreglo de cadenas no escalar o un arreglo de celdas de vectores de caracteres, los demás argumentos de entrada deben tener tamaños compatibles.

ejemplo

Ejemplos

contraer todo

Cree un vector de caracteres y reemplace una subcadena dentro de él.

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

Cree un arreglo de cadenas.

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

Reemplace una subcadena en cada elemento del arreglo.

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

Reemplace el contenido del marcador de posición en un arreglo de celdas '___' por distintos valores de un segundo arreglo de celdas.

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

Cree un vector de caracteres con un patrón repetido que se superpone. Compare los resultados de utilizar las funciones strrep, replace y regexprep para reemplazar el patrón.

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

Encuentre los índices del patrón '22' que se repite utilizando la función strfind. strfind encuentra todas las instancias del patrón, incluidas las instancias que se superponen.

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

    11    18    19    26    27    28

Reemplace '22' con strrep. Cuando utiliza strrep, esta reemplaza cada instancia identificada por strfind.

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

Reemplace '22' con replace. No reemplaza todas las instancias que reemplaza strrep.

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

Reemplace '22' con regexprep. Los resultados son idénticos a los que se obtienen utilizando la función replace.

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

strrep encuentra todas las instancias de un patrón antes de reemplazar alguna de ellas. Sin embargo, las funciones replace y regexprep reemplazan una instancia de un patrón en cuanto la encuentran en el texto.

Argumentos de entrada

contraer todo

Texto de entrada, especificado como arreglo de caracteres, vector de caracteres o arreglo de celdas de vectores de caracteres.

Tipos de datos: string | char | cell

Subcadena que se desea reemplazar, especificada como arreglo de caracteres, vector de caracteres o arreglo de celdas de vectores de caracteres.

Tipos de datos: string | char | cell

Nueva subcadena, especificada como arreglo de cadenas, vector de caracteres o arreglo de celdas de vectores de caracteres.

Tipos de datos: string | char | cell

Algoritmos

  • La función strrep no encuentra vectores de caracteres vacíos ni cadenas vacías para reemplazarlos. Es decir, cuando str y old contienen el vector de caracteres vacío ('') o la cadena vacía (""), strrep no reemplaza los vectores de caracteres ni las cadenas vacías por los contenidos de new.

  • Antes de reemplazar el texto, strrep busca todas las instancias de old en str, como la función strfind. Para patrones que se superponen, strrep lleva a cabo múltiples sustituciones.

Funcionalidad alternativa

Actualice el código que emplea strrep para utilizar replace en su lugar. Por ejemplo:

No recomendadoRecomendado
str = "ababa;
newstr = strrep(str,"b","c")
newstr = 

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

    "acaca"

Capacidades ampliadas

Historial de versiones

Introducido antes de R2006a