Main Content

strsplit

Dividir una cadena o vector de caracteres desde un delimitador específico

Descripción

ejemplo

Nota

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

C = strsplit(str) divide str en espacios en blanco en C. Un carácter de espacio en blanco equivale a cualquier secuencia en el conjunto {' ','\f','\n','\r','\t','\v'}.

Si str tiene caracteres de espacio en blanco consecutivos, strsplit los trata como un espacio en blanco.

ejemplo

C = strsplit(str,delimiter) divide str desde los delimitadores especificados por delimiter.

Si str tiene delimitadores consecutivos, sin otros caracteres entre ellos, strsplit los trata como un delimitador. Por ejemplo, tanto strsplit('Hello,world',',') como strsplit('Hello,,,world',',') devuelven la misma salida.

ejemplo

C = strsplit(str,delimiter,Name,Value) especifica las opciones adicionales del delimitador utilizando uno o más argumentos de par nombre-valor. Por ejemplo, para tratar delimitadores consecutivos como delimitadores independientes, puede especificar 'CollapseDelimiters',false.

ejemplo

[C,matches] = strsplit(___) también devuelve el arreglo matches. El argumento de salida de matches contiene todas las instancias de delimitadores desde las que strsplit divide str. Puede utilizar esta sintaxis con cualquiera de los argumentos de entrada de las sintaxis anteriores.

Ejemplos

contraer todo

str = 'The rain in Spain.';
C = strsplit(str)
C = 1x4 cell
    {'The'}    {'rain'}    {'in'}    {'Spain.'}

C es un arreglo de celdas que contiene cuatro vectores de caracteres.

Divida un vector de caracteres que contenga valores separados por comas.

data = '1.21, 1.985, 1.955, 2.015, 1.885';
C = strsplit(data,', ')
C = 1x5 cell
    {'1.21'}    {'1.985'}    {'1.955'}    {'2.015'}    {'1.885'}

Divida un vector de caracteres data, que contiene las unidades m/s con un número arbitrario de espacios en blanco en cualquier lado del texto. La expresión regular \s* coincide con cualquier carácter de espacio en blanco que aparezca cero o más veces.

data = '1.21m/s1.985m/s 1.955 m/s2.015 m/s 1.885m/s';
[C,matches] = strsplit(data,'\s*m/s\s*',...
    'DelimiterType','RegularExpression')
C = 1x6 cell
    {'1.21'}    {'1.985'}    {'1.955'}    {'2.015'}    {'1.885'}    {0x0 char}

matches = 1x5 cell
    {'m/s'}    {'m/s '}    {' m/s'}    {' m/s '}    {'m/s'}

En este caso, el último vector de caracteres de C está vacío. Este vector de caracteres vacío sigue al último delimitador que coincide.

myPath = 'C:\work\matlab';
C = strsplit(myPath,'\')
C = 1x3 cell
    {'C:'}    {'work'}    {'matlab'}

Divida un vector de caracteres en ' ' y 'ain', tratando múltiples delimitadores como uno. Especifique múltiples delimitadores en un arreglo de celdas de vectores de caracteres.

str = 'The rain in Spain stays mainly in the plain.';
[C,matches] = strsplit(str,{' ','ain'},'CollapseDelimiters',true)
C = 1x11 cell
    {'The'}    {'r'}    {'in'}    {'Sp'}    {'stays'}    {'m'}    {'ly'}    {'in'}    {'the'}    {'pl'}    {'.'}

matches = 1x10 cell
    {' '}    {'ain '}    {' '}    {'ain '}    {' '}    {'ain'}    {' '}    {' '}    {' '}    {'ain'}

Divida el mismo vector de caracteres desde espacios en blanco y 'ain', utilizando expresiones regulares y tratando múltiples delimitadores de manera independiente.

[C,matches] = strsplit(str,{'\s','ain'},'CollapseDelimiters',...
    false, 'DelimiterType','RegularExpression')
C = 1x13 cell
    {'The'}    {'r'}    {0x0 char}    {'in'}    {'Sp'}    {0x0 char}    {'stays'}    {'m'}    {'ly'}    {'in'}    {'the'}    {'pl'}    {'.'}

matches = 1x12 cell
    {' '}    {'ain'}    {' '}    {' '}    {'ain'}    {' '}    {' '}    {'ain'}    {' '}    {' '}    {' '}    {'ain'}

En este caso, strsplit trata los dos delimitadores de manera independiente, así que aparecen vectores de caracteres vacíos en la salida C entre los delimitadores que coinciden de forma consecutiva.

Divida el texto de los vectores de caracteres ', ' y ', and '.

str = 'bacon, lettuce, and tomato';
[C,matches] = strsplit(str,{', ',', and '})
C = 1x3 cell
    {'bacon'}    {'lettuce'}    {'and tomato'}

matches = 1x2 cell
    {', '}    {', '}

Dado que el comando enumera ', ' primero y ', and ' contiene ', ', la función strsplit divide str desde el primer delimitador y nunca continúa al segundo delimitador.

Si invierte el orden de los delimitadores, ', and ' se convierte en la prioridad.

str = 'bacon, lettuce, and tomato';
[C,matches] = strsplit(str,{', and ',', '})
C = 1x3 cell
    {'bacon'}    {'lettuce'}    {'tomato'}

matches = 1x2 cell
    {', '}    {', and '}

Argumentos de entrada

contraer todo

Texto de entrada, especificado como vector de caracteres o escalar de cadena.

Tipos de datos: char | string

Caracteres delimitantes, especificados como vector de caracteres, arreglo de celdas de vectores de caracteres de 1 por n o arreglo de cadenas de 1 por n. El texto especificado en delimiter no aparece en la salida C.

Especifique múltiples delimitadores en un arreglo de celdas o un arreglo de cadenas. La función strsplit divide str desde los elementos de delimiter. El orden en el que aparecen los delimitadores en delimiter no tiene importancia salvo si múltiples delimitadores comienzan una coincidencia en el mismo carácter de str. En ese caso, strsplit divide desde el primer delimitador que coincide de delimiter.

delimiter puede incluir las siguientes secuencias de escape:

\\

Barra invertida

\0

Nulo

\a

Alarma

\b

Retroceso

\f

Salto de impresión

\n

Nueva línea

\r

Retorno de carro

\t

Tabulación horizontal

\v

Tabulación vertical

Ejemplo: ','

Ejemplo: {'-',','}

Tipos de datos: char | cell | string

Argumentos de par nombre-valor

Especifique pares opcionales de argumentos como Name1=Value1,...,NameN=ValueN, donde Name es el nombre del argumento y Value es el valor correspondiente. Los argumentos nombre-valor deben aparecer después de otros argumentos, pero el orden de los pares no importa.

En las versiones anteriores a R2021a, utilice comas para separar cada nombre y valor, y encierre Name entre comillas.

Ejemplo: 'DelimiterType','RegularExpression' indica a strsplit que trate delimiter como una expresión regular.

Gestión de múltiples delimitadores, especificada como el par separado por comas que consta de 'CollapseDelimiters' y true o false. Si es true, los delimitadores consecutivos de str se tratan como uno. Si es false, los delimitadores consecutivos se tratan como delimitadores independientes, lo que tiene como resultado elementos '' del vector de caracteres vacíos entre los delimitadores que coinciden.

Ejemplo: 'CollapseDelimiters',true

Tipo de delimitador, especificado como el par separado por comas que consta de 'DelimiterType' y uno de los siguientes vectores de caracteres.

'Simple'Salvo en secuencias de escape, strsplit trata delimiter como texto literal.
'RegularExpression'strsplit trata delimiter como una expresión regular.

En ambos casos, delimiter puede incluir secuencias de escape.

Argumentos de salida

contraer todo

Partes del vector de caracteres original, devueltas como un arreglo de celdas de vectores de caracteres o un arreglo de cadenas. C siempre contine un elemento más que los que contiene matches. Por lo tanto, si str comienza con un delimitador, el primer elemento de C no contiene caracteres. Si str termina con un delimitador, la última celda de C no contiene caracteres.

Delimitadores identificados, devueltos como un arreglo de celdas de vectores de caracteres o un arreglo de cadenas. matches siempre contine un elemento menos que los que contiene la salida C. Si str es un vector de caracteres o un arreglo de celdas de vectores de caracteres, matches es un arreglo de celdas. Si str es un arreglo de cadenas, matches es un arreglo de cadenas.

Funcionalidad alternativa

Actualice el código que emplea strsplit para utilizar split en su lugar. La orientación predeterminada de split es por columna. Por ejemplo:

No recomendadoRecomendado
str = strsplit("1 2 3")
str = 

  1×3 string array

    "1"    "2"    "3"
str = split("1 2 3")
str = 

  3×1 string array

    "1"
    "2"
    "3"

Capacidades ampliadas

Historial de versiones

Introducido en R2013a