Vor- und nachgestellte Leerzeichen aus einer Zeichenfolge in C entfernen
Die Zeichenfolgenmanipulation in C beinhaltet häufig das Entfernen unnötiger Leerzeichen aus Zeichenfolgen. Dies kann besonders nützlich für Aufgaben wie Datenbereinigung oder Textverarbeitung sein.
Entfernen von führenden und nachgestellten Leerzeichen
Um führende und nachgestellte Leerzeichen zu entfernen, kann man find_first_not_of verwenden und find_last_not_of-Methoden. Diese Funktionen finden jeweils das erste und letzte Nicht-Leerzeichen in einer Zeichenfolge. Mit diesen Werten kann man die Teilzeichenfolge erhalten, die die Nicht-Leerzeichen enthält:
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); }
Zusätzliche Leerzeichen zwischen Wörtern entfernen
Um zusätzliche Leerzeichen zwischen Wörtern zu entfernen, ein zusätzlicher Schritt ist erforderlich. Dies kann mithilfe der Methoden find_first_of, find_last_of, find_first_not_of und find_last_not_of zusammen mit substr erreicht werden, um die zusätzlichen Leerzeichen durch ein einzelnes Leerzeichen zu ersetzen:
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; }
Beispielverwendung
Der folgende Codeausschnitt demonstriert deren Verwendung Funktionen:
const std::string foo = " too much\t \tspace\t\t\t "; const std::string bar = "one\ntwo"; std::cout << "[" << trim(foo) << "]" << std::endl; std::cout << "[" << reduce(foo) << "]" << std::endl; std::cout << "[" << reduce(foo, "-") << "]" << std::endl; std::cout << "[" << trim(bar) << "]" << std::endl;
Ausgabe:
[too much space] [too much space] [too-much-space] [one two]
Das obige ist der detaillierte Inhalt vonWie entferne ich führende, nachfolgende und zusätzliche Leerzeichen aus einer Zeichenfolge in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!