Main Content

strfind

Encontrar cadenas dentro de otras cadenas

Descripción

ejemplo

k = strfind(str,pat) busca en str instancias de pat. La salida, k, indica el índice de inicio de cada instancia de pat en str. Si no se encuentra pat, strfind devuelve un arreglo vacío []. La función strfind ejecuta una búsqueda que distingue entre mayúsculas y minúsculas.

  • Si str es un vector de caracteres o un escalar de cadena, strfind devuelve un vector de tipo double.

  • Si str es un arreglo de celdas de vectores de caracteres o un arreglo de cadenas, strfind devuelve un arreglo de celdas de vectores de tipo double.

ejemplo

k = strfind(str,pat,'ForceCellOutput',cellOutput) fuerza a strfind a devolver k como arreglo de celdas cuando cellOutput es verdadero y aunque str sea un vector de caracteres.

Ejemplos

contraer todo

Busque los índices de inicio de subcadenas en un vector de caracteres.

Primero, cree un vector de caracteres.

str = 'Find the starting indices of substrings in a character vector';

Busque la subcadena in.

k = strfind(str,'in')
k = 1×5

     2    15    19    36    41

Hay cinco instancias en str.

Busque la subcadena In.

k = strfind(str,'In')
k =

     []

Puesto que strfind distingue entre mayúsculas y minúsculas, no es posible encontrar la subcadena. k es un arreglo vacío.

Busque los espacios en blanco en str.

k = strfind(str,' ')
k = 1×9

     5     9    18    26    29    40    43    45    55

Hay diez espacios en blanco en str.

Desde la versión R2020b

Cree un vector de caracteres.

str = 'Find the letters.'
str = 
'Find the letters.'

Cree un patrón que coincida con secuencias de letras utilizando la función lettersPattern.

pat = lettersPattern
pat = pattern
  Matching:

    lettersPattern

Busque el índice de cada letra. Mientras que pat coincide con una secuencia de letras de cualquier longitud, strfind se detiene en cuanto encuentra una coincidencia y, a continuación, continúa hasta la siguiente coincidencia. Por ejemplo, 'Find' y 'F' son coincidencias para lettersPattern, puesto que no se especifica el número de letras para una coincidencia. Pero strfind coincide primero con 'F' y devuelve su índice. Después, strfind coincide con 'i', etc. (puede llamar a lettersPattern con un argumento opcional que especifique el número de letras con las que se debe coincidir).

k = strfind(str,pat)
k = 1×14

     1     2     3     4     6     7     8    10    11    12    13    14    15    16

Para encontrar los inicios de las palabras, llame a lettersPattern con límites. La función letterBoundary coincide con un límite entre letras y caracteres que no son letras.

pat = letterBoundary + lettersPattern
pat = pattern
  Matching:

    letterBoundary + lettersPattern

k = strfind(str,pat)
k = 1×3

     1     6    10

Para ver una lista de las funciones que crean objetos de patrones, consulte pattern.

Busque los índices de inicio de subcadenas en un arreglo de celdas de vectores de caracteres.

Cree un arreglo de celdas de vectores de caracteres.

str = {'How much wood would a woodchuck chuck';
       'if a woodchuck could chuck wood?'};

Busque wood en str.

idx = strfind(str,'wood')
idx=2×1 cell array
    {[10 23]}
    {[ 6 28]}

Examine el arreglo de celdas de salida para encontrar las instancias de wood.

idx{:,:}
ans = 1×2

    10    23

ans = 1×2

     6    28

La subcadena wood ocurre en los índices 10 y 23 en el primer vector de caracteres, y en los índices 6 y 28 en el segundo vector de caracteres.

Busque las instancias de una subcadena en un vector de caracteres. Fuerce a strfind a devolver los índices de esas instancias en un arreglo de celdas. A continuación, muestre los índices.

Cree un vector de caracteres y busque las instancias del patrón ain.

str = 'The rain in Spain.';
k = strfind(str,'ain','ForceCellOutput',true)
k = 1x1 cell array
    {[6 15]}

strfind devuelve una celda escalar con un arreglo numérico, que contiene índices de instancias de la subcadena ain en str. Para acceder al arreglo numérico dentro de la celda, use llaves.

k{1}
ans = 1×2

     6    15

Argumentos de entrada

contraer todo

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

Patrón de búsqueda, especificado como una de las siguientes opciones:

  • Escalar de cadena

  • Vector de caracteres

  • Escalar de pattern (desde la versión R2020b)

Indicador para forzar que la salida se devuelva como arreglo de celdas, especificado como false, true, 0 o 1.

Argumentos de salida

contraer todo

Índices de instancias de pat, devueltos como arreglo. Si no se encuentra pat, k es un arreglo vacío [].

  • Si str es un vector de caracteres o un escalar de cadena, k es un vector de dobles que indica el índice de cada instancia de pat.

  • Si str es un arreglo de celdas de vectores de caracteres o un arreglo de cadenas, k es un arreglo de celdas. Para cada fragmento de texto en str, la celda correspondiente de k contiene un vector de dobles que indica el índice de cada instancia de pat.

Sugerencias

  • Si pat es un vector de caracteres o un escalar de cadena sin caracteres ('' o ""), strfind devuelve un arreglo vacío.

  • Se recomienda la función contains para encontrar patrones dentro de arreglos de cadenas.

Capacidades ampliadas

Historial de versiones

Introducido antes de R2006a