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
eisspace
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
strcmp
| sort
| isstrprop
| isletter
| isspace
| eq
| ne
| gt
| ge
| le
| lt