Eliminar espacios iniciales y finales de una cadena en C
La manipulación de cadenas en C a menudo implica eliminar espacios innecesarios de las cadenas. Esto puede ser particularmente útil para tareas como limpieza de datos o procesamiento de texto.
Eliminar espacios iniciales y finales
Para eliminar espacios iniciales y finales, se puede emplear find_first_not_of y métodos find_last_not_of. Estas funciones encuentran el primer y último carácter que no es un espacio en blanco en una cadena, respectivamente. Usando estos valores, se puede obtener la subcadena que contiene los caracteres que no son espacios en blanco:
std::string trim(const std::string& str, const std::string& whitespace = " \t") { const auto strBegin = str.find_first_not_of(whitespace); if (strBegin == std::string::npos) return ""; // no content const auto strEnd = str.find_last_not_of(whitespace); const auto strRange = strEnd - strBegin 1; return str.substr(strBegin, strRange); }
Eliminar espacios adicionales entre palabras
Para eliminar espacios adicionales entre palabras, se requiere un paso adicional. Esto se puede lograr usando los métodos find_first_of, find_last_of, find_first_not_of y find_last_not_of junto con substr para reemplazar los espacios adicionales con un solo espacio:
std::string reduce(const std::string& str, const std::string& fill = " ", const std::string& whitespace = " \t") { // trim first auto result = trim(str, whitespace); // replace sub ranges auto beginSpace = result.find_first_of(whitespace); while (beginSpace != std::string::npos) { const auto endSpace = result.find_first_not_of(whitespace, beginSpace); const auto range = endSpace - beginSpace; result.replace(beginSpace, range, fill); const auto newStart = beginSpace fill.length(); beginSpace = result.find_first_of(whitespace, newStart); } return result; }
Ejemplo de uso
El siguiente fragmento de código demuestra el uso de estas funciones:
const std::string foo = " too much\t \tspace\t\t\t "; const std::string bar = "one\ntwo"; std::coutSalida:
[too much space] [too much space] [too-much-space] [one two]
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3