Desafío: Acceso y Manipulación de Elementos de Cadenas
Indexación de una cadena
Podemos acceder a los elementos de un string (que son esencialmente caracteres char) utilizando la indexación con corchetes [], de manera similar a los arreglos. Esto también nos permite reemplazar un carácter en una posición específica.
indexing.h
12string str = "Cpdefinity"; // Cpdefinity str[1] = 'o'; // Codefinity
La indexación en un string comienza desde cero, al igual que en los arreglos.
La longitud de la cadena
Con ese indexado, es posible intentar acceder a un índice incorrecto (fuera de rango), y el compilador no notificará nada al respecto.
main.cpp
1234567#include <iostream> int main() { std::string word = "Codefinity"; std::cout << word[12]; // Word's length is 10 }
Como se puede observar, la salida es inesperada y C++ no proporciona una advertencia sobre el problema. Para evitar esto, se puede utilizar el método .length() para determinar la longitud de un string y asegurar que el índice esté dentro del rango válido.
main.cpp
123456789101112#include <iostream> int main() { std::string word = "Codefinity"; int index = 12; if (index >= word.length()) std::cout << "The output is unexpected!" << std::endl; else std::cout << word[index]; // Word's length is 10 }
Indexación usando el método
Otra forma de indexar es utilizando el método .at(). Para obtener el carácter con el índice n, se puede usar la siguiente sintaxis:
at.h
1str.at(n);
Funciona igual que str[n], pero generará un error si se especifica un índice fuera de rango.
main.cpp
12345678#include <iostream> int main() { std::string word = "Codefinity"; std::cout << word.at(12); // word's length is 10 // Try outputting the character with the index 5 }
Práctica
Como se mencionó anteriormente, podemos reemplazar los caracteres dentro de una cadena utilizando la indexación (tanto con [] como con .at()). Aquí tienes un ejemplo:
main.cpp
123456789#include <iostream> int main() { std::string word = "Cpdefinitu"; word[1] = 'o'; word.at(word.length() - 1) = 'y'; // length - 1 accesses the last element std::cout << word; }
Swipe to start coding
Tienes una dirección de correo electrónico como una cadena de texto. Tu tarea es enmascarar la parte del nombre de usuario del correo para proteger la privacidad.
La función maskEmail recibe una cadena de texto que representa la dirección de correo electrónico.
- Dentro de
maskEmail, utiliza el métodofindpara localizar la posición del símbolo'@', que marca el final del nombre de usuario. - Verifica si el nombre de usuario tiene más de 1 carácter. Si no es así, devuelve el correo sin cambios.
- Usa un bucle
forpara iterar desde el índice 1 hasta (pero sin incluir) la posición de'@'. - Dentro del bucle, reemplaza cada carácter por
'*'para enmascarar el nombre de usuario. - Devuelve el correo modificado.
Solución
¡Gracias por tus comentarios!
single
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Genial!
Completion tasa mejorada a 4.35
Desafío: Acceso y Manipulación de Elementos de Cadenas
Desliza para mostrar el menú
Indexación de una cadena
Podemos acceder a los elementos de un string (que son esencialmente caracteres char) utilizando la indexación con corchetes [], de manera similar a los arreglos. Esto también nos permite reemplazar un carácter en una posición específica.
indexing.h
12string str = "Cpdefinity"; // Cpdefinity str[1] = 'o'; // Codefinity
La indexación en un string comienza desde cero, al igual que en los arreglos.
La longitud de la cadena
Con ese indexado, es posible intentar acceder a un índice incorrecto (fuera de rango), y el compilador no notificará nada al respecto.
main.cpp
1234567#include <iostream> int main() { std::string word = "Codefinity"; std::cout << word[12]; // Word's length is 10 }
Como se puede observar, la salida es inesperada y C++ no proporciona una advertencia sobre el problema. Para evitar esto, se puede utilizar el método .length() para determinar la longitud de un string y asegurar que el índice esté dentro del rango válido.
main.cpp
123456789101112#include <iostream> int main() { std::string word = "Codefinity"; int index = 12; if (index >= word.length()) std::cout << "The output is unexpected!" << std::endl; else std::cout << word[index]; // Word's length is 10 }
Indexación usando el método
Otra forma de indexar es utilizando el método .at(). Para obtener el carácter con el índice n, se puede usar la siguiente sintaxis:
at.h
1str.at(n);
Funciona igual que str[n], pero generará un error si se especifica un índice fuera de rango.
main.cpp
12345678#include <iostream> int main() { std::string word = "Codefinity"; std::cout << word.at(12); // word's length is 10 // Try outputting the character with the index 5 }
Práctica
Como se mencionó anteriormente, podemos reemplazar los caracteres dentro de una cadena utilizando la indexación (tanto con [] como con .at()). Aquí tienes un ejemplo:
main.cpp
123456789#include <iostream> int main() { std::string word = "Cpdefinitu"; word[1] = 'o'; word.at(word.length() - 1) = 'y'; // length - 1 accesses the last element std::cout << word; }
Swipe to start coding
Tienes una dirección de correo electrónico como una cadena de texto. Tu tarea es enmascarar la parte del nombre de usuario del correo para proteger la privacidad.
La función maskEmail recibe una cadena de texto que representa la dirección de correo electrónico.
- Dentro de
maskEmail, utiliza el métodofindpara localizar la posición del símbolo'@', que marca el final del nombre de usuario. - Verifica si el nombre de usuario tiene más de 1 carácter. Si no es así, devuelve el correo sin cambios.
- Usa un bucle
forpara iterar desde el índice 1 hasta (pero sin incluir) la posición de'@'. - Dentro del bucle, reemplaza cada carácter por
'*'para enmascarar el nombre de usuario. - Devuelve el correo modificado.
Solución
¡Gracias por tus comentarios!
single