|
| 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 | + <?php |
| 17 | + |
| 18 | +/* |
| 19 | + * OPERACIONES |
| 20 | + */ |
| 21 | + |
| 22 | +// 1. Declaración de una cadena |
| 23 | +$cadena = "Hola Mundo"; |
| 24 | + |
| 25 | +// 2. Acceso a caracteres específicos |
| 26 | +echo "2. Acceso a caracteres:<br>"; |
| 27 | +echo " El primer carácter es: " . $cadena[0] . "<br>"; // 'H' |
| 28 | +echo " El cuarto carácter es: " . $cadena[3] . "<br>"; // 'a' |
| 29 | +echo '<br>'; |
| 30 | + |
| 31 | +// 3. Subcadenas (substr) |
| 32 | +echo "3. Subcadenas:<br>"; |
| 33 | +echo " Subcadena desde el índice 5: " . substr($cadena, 5) . "<br>"; // "Mundo" |
| 34 | +echo " Subcadena de longitud 3 desde el índice 5: " . substr($cadena, 5, 3) . "<br>"; // "Mun" |
| 35 | +echo '<br>'; |
| 36 | + |
| 37 | +// 4. Longitud de la cadena (strlen) |
| 38 | +echo "4. Longitud:<br>"; |
| 39 | +echo " La longitud de '$cadena' es: " . strlen($cadena) . "<br>"; |
| 40 | +echo '<br>'; |
| 41 | + |
| 42 | +// 5. Concatenación (operador .) |
| 43 | +echo "5. Concatenación:<br>"; |
| 44 | +$otraCadena = " desde PHP"; |
| 45 | +$concatenada = $cadena . $otraCadena; |
| 46 | +echo " Cadena concatenada: $concatenada<br>"; |
| 47 | +echo '<br>'; |
| 48 | + |
| 49 | +// 6. Repetición de cadenas (str_repeat) |
| 50 | +echo "6. Repetición:<br>"; |
| 51 | +$repetida = str_repeat($cadena, 2); |
| 52 | +echo " Repetir '$cadena' 2 veces: $repetida<br>"; |
| 53 | +echo '<br>'; |
| 54 | + |
| 55 | +// 7. Recorrer cada carácter (str_split + bucle) |
| 56 | +echo "7. Recorrido de la cadena carácter a carácter:<br>"; |
| 57 | +$arrayCaracteres = str_split($cadena); |
| 58 | +foreach ($arrayCaracteres as $char) { |
| 59 | + echo " $char<br>"; |
| 60 | +} |
| 61 | +echo '<br>'; |
| 62 | + |
| 63 | +// 8. Conversión a mayúsculas y minúsculas (strtoupper, strtolower) |
| 64 | +echo "8. Cambios de mayúsculas/minúsculas:<br>"; |
| 65 | +echo " En mayúsculas: " . strtoupper($cadena) . "<br>"; // "HOLA MUNDO" |
| 66 | +echo " En minúsculas: " . strtolower($cadena) . "<br>"; // "hola mundo" |
| 67 | +echo '<br>'; |
| 68 | + |
| 69 | +// 9. Reemplazo de subcadenas (str_replace) |
| 70 | +echo "9. Reemplazo:<br>"; |
| 71 | +$reemplazada = str_replace("Mundo", "ChatGPT", $cadena); |
| 72 | +echo " Reemplazar 'Mundo' por 'ChatGPT': $reemplazada<br>"; |
| 73 | +echo '<br>'; |
| 74 | + |
| 75 | +// 10. División de cadenas (explode) |
| 76 | +echo "10. División (explode):<br>"; |
| 77 | +$partes = explode(" ", $cadena); // ["Hola", "Mundo"] |
| 78 | +echo " Después de explode(' ', '$cadena'): <br>"; |
| 79 | +print_r($partes); |
| 80 | +echo '<br>'; |
| 81 | + |
| 82 | +// 11. Unión de elementos de un array en una cadena (implode) |
| 83 | +echo "11. Unión (implode):<br>"; |
| 84 | +$unida = implode("-", $partes); // "Hola-Mundo" |
| 85 | +echo " Unir con '-': $unida<br>"; |
| 86 | +echo '<br>'; |
| 87 | + |
| 88 | +// 12. Interpolación de variables |
| 89 | +echo "12. Interpolación:<br>"; |
| 90 | +$nombre = "Carlos"; |
| 91 | +echo " Usando comillas dobles, se puede interpolar: \"Hola, $nombre\"<br>"; |
| 92 | +echo '<br>'; |
| 93 | + |
| 94 | +// 13. Verificación de la existencia de subcadena (strpos o str_contains en PHP8+) |
| 95 | +echo "13. Verificación de subcadena:<br>"; |
| 96 | +if (strpos($cadena, "Mundo") !== false) { |
| 97 | + echo " 'Mundo' se encuentra dentro de '$cadena'.<br>"; |
| 98 | +} else { |
| 99 | + echo " 'Mundo' NO se encuentra dentro de '$cadena'.<br>"; |
| 100 | +} |
| 101 | +echo '<br>'; |
| 102 | + |
| 103 | +/* |
| 104 | + * 🔥 PROGRAMA PARA PALÍNDROMOS, ANAGRAMAS E ISOGRAMAS |
| 105 | + * |
| 106 | + * Este programa analiza dos palabras y realiza comprobaciones |
| 107 | + * para descubrir si son: |
| 108 | + * - Palíndromos |
| 109 | + * - Anagramas |
| 110 | + * - Isogramas |
| 111 | + */ |
| 112 | + |
| 113 | +// Puedes cambiar estas dos palabras para hacer pruebas. |
| 114 | +$palabra1 = "Murcielago"; |
| 115 | +$palabra2 = "Guacamole"; |
| 116 | + |
| 117 | +/** |
| 118 | + * isPalindrome |
| 119 | + * Comprueba si una palabra es palíndroma (se lee igual al derecho y al revés). |
| 120 | + */ |
| 121 | +function isPalindrome($word) { |
| 122 | + // Convertimos a minúsculas y quitamos espacios en blanco |
| 123 | + $procesada = strtolower(preg_replace("/\s+/", "", $word)); |
| 124 | + // Comparamos con su inversa |
| 125 | + return $procesada === strrev($procesada); |
| 126 | +} |
| 127 | + |
| 128 | +/** |
| 129 | + * isAnagram |
| 130 | + * Comprueba si dos palabras son anagramas (contienen las mismas letras en distinto orden). |
| 131 | + */ |
| 132 | +function isAnagram($word1, $word2) { |
| 133 | + // Convertimos a minúsculas y quitamos espacios |
| 134 | + $procesada1 = strtolower(preg_replace("/\s+/", "", $word1)); |
| 135 | + $procesada2 = strtolower(preg_replace("/\s+/", "", $word2)); |
| 136 | + |
| 137 | + // Creamos arrays de caracteres y los ordenamos |
| 138 | + $array1 = str_split($procesada1); |
| 139 | + sort($array1); |
| 140 | + $array2 = str_split($procesada2); |
| 141 | + sort($array2); |
| 142 | + |
| 143 | + // Comparamos el resultado |
| 144 | + return implode("", $array1) === implode("", $array2); |
| 145 | +} |
| 146 | + |
| 147 | +/** |
| 148 | + * isIsogram |
| 149 | + * Comprueba si una palabra es isograma (no repite ninguna letra). |
| 150 | + */ |
| 151 | +function isIsogram($word) { |
| 152 | + // Convertimos a minúsculas y quitamos espacios |
| 153 | + $procesada = strtolower(preg_replace("/\s+/", "", $word)); |
| 154 | + // Dividimos en caracteres |
| 155 | + $letras = str_split($procesada); |
| 156 | + // Si el número de letras es el mismo que el número de letras únicas, es isograma |
| 157 | + return count($letras) === count(array_unique($letras)); |
| 158 | +} |
| 159 | + |
| 160 | +echo "-------------------------------------<br>"; |
| 161 | +echo " COMPROBACIONES ESPECIALES<br>"; |
| 162 | +echo "<br>"; |
| 163 | +echo "Palabra 1: $palabra1<br>"; |
| 164 | +echo "Palabra 2: $palabra2<br><br>"; |
| 165 | + |
| 166 | +// Palíndromos |
| 167 | +echo "¿Palabra 1 es palíndromo? " . (isPalindrome($palabra1) ? "Sí<br>" : "No<br>"); |
| 168 | +echo "¿Palabra 2 es palíndromo? " . (isPalindrome($palabra2) ? "Sí<br>" : "No<br>"); |
| 169 | + |
| 170 | +// Anagramas |
| 171 | +echo "¿Son anagramas? " . (isAnagram($palabra1, $palabra2) ? "Sí<br>" : "No<br>"); |
| 172 | + |
| 173 | +// Isogramas |
| 174 | +echo "¿Palabra 1 es isograma? " . (isIsogram($palabra1) ? "Sí<br>" : "No<br>"); |
| 175 | +echo "¿Palabra 2 es isograma? " . (isIsogram($palabra2) ? "Sí<br>" : "No<br>"); |
| 176 | + |
| 177 | +?> |
0 commit comments