Main Content

Comparar texto

Compare texto en arreglos de caracteres y arreglos de cadenas de diferentes maneras. Puede comparar arreglos de cadenas y vectores de caracteres usando operadores relacionales y también con la función strcmp. Puede ordenar arreglos de cadenas usando la función sort, de la misma forma que ordenaría arreglos de cualquier otro tipo. MATLAB® también ofrece funciones para inspeccionar caracteres en fragmentos de texto. Por ejemplo, puede determinar qué caracteres de un vector de caracteres o de un arreglo de cadenas son letras o caracteres de espacio.

Comparar arreglos de cadenas para comprobar la igualdad

Puede comparar arreglos de cadenas para comprobar la igualdad con los operadores relacionales == y ~=. Cuando se comparan arreglos de cadenas, la salida es un arreglo lógico que tiene 1 donde la relación es verdadera, y 0 donde no lo es.

Cree dos escalares de cadena. Puede crear cadenas utilizando comillas dobles.

str1 = "Hello";
str2 = "World";
str1,str2
str1 = 
"Hello"
str2 = 
"World"

Compare str1 y str2 para comprobar su igualdad.

str1 == str2
ans = logical
   0

Compare un arreglo de cadenas que contiene varios elementos con un escalar de cadenas.

str1 = ["Mercury","Gemini","Apollo";...
        "Skylab","Skylab B","International Space Station"];
str2 = "Apollo";
str1 == str2
ans = 2x3 logical array

   0   0   1
   0   0   0

Compare un arreglo de cadenas con un vector de caracteres. Siempre y cuando una de las variables sea un arreglo de cadenas, puede realizar la comparación.

chr = 'Gemini';
TF = (str1 == chr)
TF = 2x3 logical array

   0   1   0
   0   0   0

Indexe en str1 con TF para extraer los elementos de cadena que coinciden con Gemini. Puede usar arreglos lógicos para indexar en un arreglo.

str1(TF)
ans = 
"Gemini"

Compare para comprobar la desigualdad usando el operador ~=. Indexe en str1 para extraer los elementos que no coinciden con 'Gemini'.

TF = (str1 ~= chr)
TF = 2x3 logical array

   1   0   1
   1   1   1

str1(TF)
ans = 5x1 string
    "Mercury"
    "Skylab"
    "Skylab B"
    "Apollo"
    "International Space Station"

Compare dos arreglos de cadenas no escalares. Cuando se comparan dos arreglos no escalares, deben tener el mismo tamaño.

str2 = ["Mercury","Mars","Apollo";...
        "Jupiter","Saturn","Neptune"];
TF = (str1 == str2)
TF = 2x3 logical array

   1   0   1
   0   0   0

Indexe en str1 para extraer las coincidencias.

str1(TF)
ans = 2x1 string
    "Mercury"
    "Apollo"

Comparar arreglos de cadenas con otros operadores relacionales

También puede comparar cadenas con los operadores relacionales >, >=, < y <=. Las cadenas que empiezan por mayúsculas van antes que las que empiezan por minúsculas. Por ejemplo, la cadena "ABC" es menor que "abc". Los dígitos y algunos signos de puntuación también van antes que las letras.

"ABC" < "abc"
ans = logical
   1

Compare un arreglo de cadenas que contenga nombres con otro nombre, usando el operador >. Los nombres Sanchez, de Ponte y Nash van después de Matthews, porque S, d y N son mayores que M.

str = ["Sanchez","Jones","de Ponte","Crosby","Nash"]; 
TF = (str > "Matthews")
TF = 1x5 logical array

   1   0   1   0   1

str(TF)
ans = 1x3 string
    "Sanchez"    "de Ponte"    "Nash"

Ordenar arreglos de cadenas

Puede ordenar arreglos de cadenas. MATLAB® almacena los caracteres como Unicode®, usando el esquema de cifrado de caracteres UTF-16. Los arreglos de caracteres y de cadenas se ordenan en función del orden de los puntos de código UTF-16. En el caso de los caracteres que también son caracteres ASCII, este orden significa que las mayúsculas van antes que las minúsculas. Los dígitos y algunos signos de puntuación también van antes que las letras.

Ordene el arreglo de cadenas str.

sort(str)
ans = 1x5 string
    "Crosby"    "Jones"    "Nash"    "Sanchez"    "de Ponte"

Ordene un arreglo de cadenas de 2 por 3. La función sort ordena los elementos de cada columna por separado.

sort(str2)
ans = 2x3 string
    "Jupiter"    "Mars"      "Apollo" 
    "Mercury"    "Saturn"    "Neptune"

Para ordenar los elementos de cada fila, ordene str2 a lo largo de la segunda dimensión.

sort(str2,2)
ans = 2x3 string
    "Apollo"     "Mars"       "Mercury"
    "Jupiter"    "Neptune"    "Saturn" 

Comparar vectores de caracteres

Puede comparar vectores de caracteres y arreglos de celdas de vectores de caracteres entre sí. Use la función strcmp para comparar dos vectores de caracteres, o strncmp para comparar los primeros N caracteres. También puede usar strcmpi y strncmpi para comparaciones que no hacen distinción entre mayúsculas y minúsculas.

Compare dos vectores de caracteres con la función strcmp. chr1 y chr2 no son iguales.

chr1 = 'hello';
chr2 = 'help';
TF = strcmp(chr1,chr2)
TF = logical
   0

Observe que la función strcmp de MATLAB difiere de la versión C de strcmp. La versión C de strcmp devuelve 0 cuando dos arreglos de caracteres son iguales, no cuando son diferentes.

Compare los dos primeros caracteres con la función strncmp. TF es 1 porque ambos vectores de caracteres empiezan por los caracteres he.

TF = strncmp(chr1,chr2,2)
TF = logical
   1

Compare dos arreglos de celdas de vectores de caracteres. strcmp devuelve un arreglo lógico que tiene el mismo tamaño que los arreglos de celdas.

C1 = {'pizza'; 'chips'; 'candy'};
C2 = {'pizza'; 'chocolate'; 'pretzels'};
strcmp(C1,C2)
ans = 3x1 logical array

   1
   0
   0

Inspeccionar caracteres en arreglos de cadenas y de caracteres

Puede inspeccionar los caracteres en arreglos de cadenas o en arreglos de caracteres con las funciones isstrprop, isletter e isspace.

  • La función isstrprop inspecciona caracteres en arreglos de cadenas o de caracteres.

  • Las funciones isletter e isspace solo inspeccionan caracteres en arreglos de caracteres.

Determine qué caracteres de un vector de caracteres son caracteres espaciales. isspace devuelve un vector lógico del mismo tamaño que chr.

chr = 'Four score and seven years ago';
TF = isspace(chr)
TF = 1x30 logical array

   0   0   0   0   1   0   0   0   0   0   1   0   0   0   1   0   0   0   0   0   1   0   0   0   0   0   1   0   0   0

La función isstrprop puede consultar caracteres por diferentes cualidades. isstrprop puede determinar si los caracteres de una cadena o vector de caracteres son letras, caracteres alfanuméricos, dígitos decimales o hexadecimales, o caracteres de puntuación.

Determine qué caracteres de una cadena son signos de puntuación. isstrprop devuelve un vector lógico cuya longitud es igual al número de caracteres de str.

str = "A horse! A horse! My kingdom for a horse!"
str = 
"A horse! A horse! My kingdom for a horse!"
isstrprop(str,"punct")
ans = 1x41 logical array

   0   0   0   0   0   0   0   1   0   0   0   0   0   0   0   0   1   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   1

Determine qué caracteres del vector de caracteres chr son letras.

isstrprop(chr,"alpha")
ans = 1x30 logical array

   1   1   1   1   0   1   1   1   1   1   0   1   1   1   0   1   1   1   1   1   0   1   1   1   1   1   0   1   1   1

Consulte también

| | | | | | | | | |

Temas relacionados