Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich Strings in C trimmen und reduzieren?

Wie kann ich Strings in C trimmen und reduzieren?

DDD
DDDOriginal
2024-11-13 11:56:02257Durchsuche

How can I trim and reduce strings in C  ?

Trimmen und Reduzieren von Strings in C

Trimmen und Reduzieren von Strings sind gängige Vorgänge in der Programmierung. Beim Trimmen geht es um das Entfernen führender und nachfolgender Leerzeichen aus einer Zeichenfolge, beim Reduzieren geht es darum, aufeinanderfolgende Leerzeichen durch ein einzelnes vordefiniertes Zeichen oder eine einzelne Zeichenfolge zu ersetzen.

Zeichenfolgen kürzen

Um eine Zeichenfolge in C zu kürzen, müssen Sie kann die Methoden find_first_not_of und find_last_not_of verwenden, um das erste und letzte Nicht-Leerzeichen zu identifizieren. Der folgende Code veranschaulicht diesen Ansatz:

#include <string>

std::string trim(const std::string& str) {
    const auto strBegin = str.find_first_not_of(" \t");
    if (strBegin == std::string::npos)
        return ""; // no content

    const auto strEnd = str.find_last_not_of(" \t");
    const auto strRange = strEnd - strBegin + 1;

    return str.substr(strBegin, strRange);
}

Zeichenfolgen reduzieren

Beim Reduzieren einer Zeichenfolge werden aufeinanderfolgende Leerzeichen durch ein vordefiniertes Zeichen oder eine vordefinierte Zeichenfolge ersetzt. Hier ist eine Funktion, die diesen Vorgang ausführt:

std::string reduce(const std::string& str, const std::string& fill = " ", const std::string& whitespace = " \t") {
    // trim first
    auto result = trim(str);

    // 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

Hier ist ein Beispiel, das die Verwendung der Trimm- und Reduzierungsfunktionen demonstriert:

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 kann ich Strings in C trimmen und reduzieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn