Contenido principal

strsplit

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

Descripción

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.

ejemplo

Ejemplos

contraer todo

str = 'The rain in Spain.';
C = strsplit(str)
C = 1×4 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 = 1×5 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 = 1×6 cell
    {'1.21'}    {'1.985'}    {'1.955'}    {'2.015'}    {'1.885'}    {0×0 char}

matches = 1×5 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 = 1×3 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 = 1×11 cell
    {'The'}    {'r'}    {'in'}    {'Sp'}    {'stays'}    {'m'}    {'ly'}    {'in'}    {'the'}    {'pl'}    {'.'}

matches = 1×10 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 = 1×13 cell
    {'The'}    {'r'}    {0×0 char}    {'in'}    {'Sp'}    {0×0 char}    {'stays'}    {'m'}    {'ly'}    {'in'}    {'the'}    {'pl'}    {'.'}

matches = 1×12 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 = 1×3 cell
    {'bacon'}    {'lettuce'}    {'and tomato'}

matches = 1×2 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 = 1×3 cell
    {'bacon'}    {'lettuce'}    {'tomato'}

matches = 1×2 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

contraer todo

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

expandir todo

Historial de versiones

Introducido en R2013a

expandir todo