← MATLAB EspañolChapter 09 of 13

Manipulacion de Cadenas de Texto

## Objetivos de Aprendizaje - Crear y manipular cadenas de texto - Usar funciones de arreglos de cadenas - Convertir entre tipos de datos - Buscar y reemplazar dentro de cadenas ## Creando Cadenas de Texto ### Cadenas de Texto Basicas ```matlab % Arreglo de caracteres (estilo antiguo) c1 = 'Hola'; c2 = 'Mundo'; % Escalar de cadena (R2016b+) s1 = "Hola"; s2 = "Mundo"; ``` ### Arreglos de Cadenas ```matlab % Vector de cadenas nombres = ["Juan", "Juana", "Roberto"]; % Crear desde arreglo de caracteres c = 'Hola Mundo'; s = string(c); % Crear arreglo de cadenas strArray = string({'Alicia', 'Roberto', 'Carlos'}); ``` ### Cadenas Vacias ```matlab emptyChar = ''; emptyString = string(""); strWithSpaces = strings(1, 3); % Arreglo 1x3 de cadenas vacias ``` ## Operaciones con Cadenas ### Concatenacion ```matlab % Concatenacion horizontal s1 = "Hola"; s2 = "Mundo"; s = [s1, s2] % "HolaMundo" s = strcat(s1, s2) % "HolaMundo" % Con separador s = strjoin({s1, s2}, ' ') % "Hola Mundo" ``` ### Unir Arreglos de Cadenas ```matlab nombres = ["Alicia", "Roberto", "Carlos"]; % Unir con delimitador joined = strjoin(nombres, ', ') % "Alicia, Roberto, Carlos" % Unir lineas lines = strjoin(nombres, newline) ``` ### Replicar Cadenas ```matlab s = "Ha"; rep = repmat(s, 1, 3) % "HaHaHa" % Usando la funcion strings rep = strings(1, 3); rep(:) = "Hola"; ``` ## Longitud de Cadena ```matlab s = "Hola"; length(s) % 5 (longitud de cadena) strlength(s) % 5 % Para arreglo de cadenas nombres = ["Alicia", "Roberto", "Carlos"]; strlength(nombres) % [5, 7, 6] ``` ## Extrayendo Subcadenas ### Extraer Partes ```matlab s = "Hola Mundo"; % Extraer por posicion extract(s, [1, 5]) % "Hola" extract(s, [7, 11]) % "Mundo" % Usando dos puntos s(1:5) % "Hola" s(7:end) % "Mundo" ``` ### Dividir y Unir ```matlab s = "Hola,Mundo,2024"; split(s, ',') % ["Hola", "Mundo", "2024"] splitlines(s) % Dividir por nuevas lineas % Unir de vuelta strjoin({"A", "B", "C"}, '-') % "A-B-C" ``` ### Extraer Entre ```matlab s = "Hola(Mundo)"; extractBetween(s, '(', ')') % "Mundo" ``` ## Buscando en Cadenas ### Encontrar Patron ```matlab s = "Hola Mundo"; % Contiene contains(s, 'Mundo') % true contains(s, 'mundo') % false (sensible a mayusculas) contains(s, 'mundo', 'IgnoreCase', true) % true % ComienzaCon / TerminaCon startsWith(s, 'Hola') % true endsWith(s, 'Mundo') % true ``` ### Encontrar Posicion ```matlab s = "Hola Mundo"; % Posicion del patron idx = strfind(s, 'o') % [5, 8] (posiciones) % Usando contains TF = contains(s, 'o') % Usando operador == TF = (s == 'Mundo') ``` ### Comparacion de Cadenas ```matlab s1 = "Hola"; s2 = "Mundo"; s3 = "Hola"; % Igual strcmp(s1, s2) % false strcmp(s1, s3) % true % Igual ignorando mayusculas strcmpi(s1, 'hola') % true % Comparar primeros n caracteres strncmp(s1, s3, 3) % true ``` ### Coincidencia de Patrones ```matlab s = "El veloz marron"; % Usando contains contains(s, 'marron') % Usando regexp pat = "marron"; idx = strfind(s, pat) % Patrones regex regexp(s, '\w+') % Encontrar todas las palabras ``` ## Reemplazando Cadenas ### Reemplazo Basico ```matlab s = "Hola Mundo"; % Reemplazar subcadena newStr = replace(s, 'Mundo', 'MATLAB') % "Hola MATLAB" newStr = replace(s, 'o', '0') % "Hell0 Mund0" ``` ### Multiples Reemplazos ```matlab s = "rojo azul rojo verde"; % Reemplazar multiples replace(s, {'rojo', 'azul'}, {'verde', 'amarillo'}) ``` ### Usando regexprep ```matlab s = "Hola123Mundo456"; % Reemplazo con regex newStr = regexprep(s, '\d+', '#') % "Hola#Mundo#" newStr = regexprep(s, '[0-9]', '0') % "Hola000Mundo000" ``` ## Mayusculas y Minusculas ```matlab s = "Hola Mundo"; upper(s) % "HOLA MUNDO" lower(s) % "hola mundo" title(s) % "Hola Mundo" sentcase(s) % "Hola mundo" (caso de oracion) ``` ## Recortar y Rellenar ```matlab s = " Hola "; trim(s) % "Hola" (eliminar espacios iniciales/finales) s2 = "Hola"; pad(s2, 10) % " Hola" (rellenar a longitud 10) pad(s2, 10, 'both') % " Hola " ``` ## Conversion de Cadenas ### Numero a Cadena ```matlab % Numero a cadena num2str(42) % "42" num2str(3.14159, 4) % "3.142" % Entero a cadena int2str(42) % "42" % Usando string (R2016b+) string(42) % "42" string(3.14) % "3.14" % Cadena formateada s = sprintf("Valor: %.2f", 3.14159) % "Valor: 3.14" ``` ### Cadena a Numero ```matlab % Cadena a numero str2double("42") % 42 str2num("42") % 42 % Cadena a entero str2double("42") % Con manejo de errores str = "abc"; num = str2double(str); % NaN isnan(num) % true ``` ### Conversion de Arreglo de Caracteres ```matlab s = "Hola"; c = char(s) % 'Hola' c = ['H', 'e', 'l', 'l', 'o']; s = string(c) % "Hola" ``` ## Formateo de Cadenas ### sprintf ```matlab nombre = "Alicia"; edad = 30; s = sprintf('Nombre: %s, Edad: %d', nombre, edad); % "Nombre: Alicia, Edad: 30" s = sprintf('Pi: %.4f', pi); % "Pi: 3.1416" ``` ### Opciones de Formateo ```matlab % Ancho y precision sprintf('%10s', 'Hola') % " Hola" sprintf('%.2f', 3.14159) % "3.14" % Formateo de enteros sprintf('%05d', 42) % "00042" sprintf('%+d', 42) % "+42" ``` ## Arreglos de Cadenas con Datos Faltantes ```matlab % Arreglo de cadenas con faltantes str = strings(1, 3); str(1) = "Alicia"; str(2) = ""; str(3) = "Roberto"; % Detectar faltantes ismissing(str) % [false, true, false] % Reemplazar faltantes str = replace(str, "", string(missing)); ``` ## Patrones de Cadenas ### Objetos de Patron de Cadena (R2020b+) ```matlab pat = pattern("Hola"); % O con sintaxis regex pat = regexPattern("H\w+"); s = "Hola Mundo"; extract(s, pat) % "Hola" contains(s, pat) % true ``` ## Resumen - Usar `string()` para escalares de cadena, `["a", "b"]` para arreglos - `strcat()` y `[s1, s2]` para concatenacion - `split()` y `strjoin()` para dividir/unir - `replace()` para reemplazo de subcadenas - `contains()`, `startsWith()`, `endsWith()` para busqueda - `upper()`, `lower()`, `trim()` para transformaciones - `num2str()` y `str2double()` para conversion - `sprintf()` para cadenas formateadas

Comments

Comments powered by Giscus

To enable comments, add your Giscus embed code here.

Learn more about Giscus →