|
| 1 | +/* |
| 2 | + * EJERCICIO: |
| 3 | + * Muestra ejemplos de todas las operaciones que puedes realizar con cadenas de caracteres |
| 4 | + * en tu lenguaje. Algunas de esas operaciones podrían ser (busca todas las que puedas): |
| 5 | + * - Acceso a caracteres específicos, subcadenas, longitud, concatenación, repetición, recorrido, |
| 6 | + * conversión a mayúsculas y minúsculas, reemplazo, división, unión, interpolación, verificación... |
| 7 | + * |
| 8 | + * DIFICULTAD EXTRA (opcional): |
| 9 | + * Crea un programa que analice dos palabras diferentes y realice comprobaciones |
| 10 | + * para descubrir si son: |
| 11 | + * - Palíndromos |
| 12 | + * - Anagramas |
| 13 | + * - Isogramas |
| 14 | + */ |
| 15 | + |
| 16 | +let myString = "Hola! JavaScript"; |
| 17 | + |
| 18 | +// Acceso |
| 19 | +console.log(myString[0]); |
| 20 | +console.log(myString[1]); |
| 21 | +console.log(myString[2]); |
| 22 | + |
| 23 | +// at() retorna el caracter del indice indicado |
| 24 | +console.log(myString.at(-1)); |
| 25 | + |
| 26 | +// Subcadenas |
| 27 | +console.log(myString.substring(0, 8)); |
| 28 | + |
| 29 | +// Longitud |
| 30 | +console.log(myString.length); |
| 31 | + |
| 32 | +// Concatenacion |
| 33 | + |
| 34 | +let name = "Diego"; |
| 35 | +let lastname = "Arenas"; |
| 36 | +let fullname = name.concat(" ", lastname); |
| 37 | + |
| 38 | +console.log(fullname); |
| 39 | + |
| 40 | +// Repeticion |
| 41 | +console.log(name.repeat(10)); |
| 42 | + |
| 43 | +// Recorrer un string |
| 44 | +for (let i = 0; i < myString.length; i++) { |
| 45 | + console.log(myString[i]); |
| 46 | +} |
| 47 | + |
| 48 | +// Conversion mayus y minus |
| 49 | +console.log(myString.toUpperCase()); |
| 50 | +console.log(myString.toLowerCase()); |
| 51 | + |
| 52 | +// Reemplazar |
| 53 | +console.log(myString.replace("javascript", "JavaScript")); // Reemplaza la primera palabra que coincida con lo indicado pero solo esa |
| 54 | +console.log(myString.replaceAll("a", "!")); // Reemplaza todos los caracteres que coinciden |
| 55 | + |
| 56 | +// Split |
| 57 | +const words = myString.split(" "); // devolvera un array, separarando elementos dado el string que se indicque |
| 58 | +console.log(words); |
| 59 | + |
| 60 | +// Splice |
| 61 | +let newString = myString.slice(3, -3); // El método slice() extrae una sección de una cadena y devuelve una cadena nueva. |
| 62 | +console.log(newString); |
| 63 | + |
| 64 | +// template literal |
| 65 | +console.log(`Mi nombre es ${name}`); |
| 66 | + |
| 67 | +// Verificacion |
| 68 | + |
| 69 | +// Busqueda |
| 70 | + |
| 71 | +// search |
| 72 | +console.log(myString.search(/[aeiouáéíóú]/)); // sirve para buscar expresiones regulares si encuentra una coincidencia retorna el indice, si no -1 |
| 73 | + |
| 74 | +// includes |
| 75 | +console.log(myString.includes("la")); // Retorna true si incluye y false en caso contrario |
| 76 | + |
| 77 | +// indexOf |
| 78 | +console.log(myString.indexOf("Java")); // Retorna el indice de una subcadena literal |
| 79 | + |
| 80 | +// lastIndexOf |
| 81 | +console.log(myString.lastIndexOf("Java")); // Retorna el indice de una subcadena literal buscando desde el final hacia el inicio |
| 82 | + |
| 83 | +// match |
| 84 | +const regex = /[A-Z]/g; |
| 85 | +const found = myString.match(regex); // devolvera un arrai con todas las expreciones regulares indicadas, en este caso todas las mayusculas |
| 86 | +console.log(found); |
| 87 | + |
| 88 | +// matchAll |
| 89 | +// El método matchAll() retorna un iterador de todos los resultados de ocurrencia en una cadena de texto contra una expresión regular, incluyendo grupos de captura. |
| 90 | +const regexp = /t(e)(st(\d?))/g; |
| 91 | +const str = "test1test2"; |
| 92 | + |
| 93 | +const array = [...str.matchAll(regexp)]; |
| 94 | + |
| 95 | +console.log(array[0]); |
| 96 | +// Expected output: Array ["test1", "e", "st1", "1"] |
| 97 | + |
| 98 | +console.log(array[1]); |
| 99 | +// Expected output: Array ["test2", "e", "st2", "2"] |
| 100 | + |
| 101 | +/* |
| 102 | + * DIFICULTAD EXTRA (opcional): |
| 103 | + * Crea un programa que analice dos palabras diferentes y realice comprobaciones |
| 104 | + * para descubrir si son: |
| 105 | + * - Palíndromos |
| 106 | + * - Anagramas |
| 107 | + * - Isogramas |
| 108 | + */ |
| 109 | + |
| 110 | + |
| 111 | +const AnalizeWords = { |
| 112 | + reverseString: (str) => str.split("").reverse().join(""), |
| 113 | + sortString: (str) => str.split("").sort().join(""), |
| 114 | + isIsogram: function (str) { |
| 115 | + const listChars = str.split("").sort(); |
| 116 | + const Counts = {}; |
| 117 | + let result = true; |
| 118 | + for (const element of listChars) { |
| 119 | + if (Object.hasOwn(Counts, element)) { |
| 120 | + Counts[element] += 1; |
| 121 | + result = false; |
| 122 | + } else { |
| 123 | + Counts[element] = 1; |
| 124 | + } |
| 125 | + } |
| 126 | + return result ? `${str} es un Isograma` : `${str} no es un Isograma`; |
| 127 | + }, |
| 128 | + isAnagram: function (word1, word2) { |
| 129 | + return this.sortString(word1) === this.sortString(word2) |
| 130 | + ? `${word1} y ${word2} son un anagrama` |
| 131 | + : `${word1} y ${word2} no son un anagrama`; |
| 132 | + }, |
| 133 | + isPalindrome: function (word) { |
| 134 | + return word === this.reverseString(word) |
| 135 | + ? `${word} es un palindromo` |
| 136 | + : `${word} no es un palindromo`; |
| 137 | + }, |
| 138 | + verify : function (word1, word2) { |
| 139 | + console.log(AnalizeWords.isPalindrome(word1)); |
| 140 | + console.log(AnalizeWords.isPalindrome(word2)); |
| 141 | + |
| 142 | + console.log(AnalizeWords.isAnagram(word1, word2)); |
| 143 | + |
| 144 | + console.log(AnalizeWords.isIsogram(word1)); |
| 145 | + console.log(AnalizeWords.isIsogram(word1)); |
| 146 | + } |
| 147 | +}; |
| 148 | + |
| 149 | +console.log(AnalizeWords.verify("arroz", "zorra")); |
| 150 | + |
0 commit comments