C++:
Fjerne anførselstegn fra en streng
Hvordan:
Her er en grei måte å sparke disse anførselstegnene til fortauskanten i C++:
#include <iostream>
#include <algorithm>
std::string remove_quotes(std::string input) {
input.erase(std::remove(input.begin(), input.end(), '\"'), input.end());
input.erase(std::remove(input.begin(), input.end(), '\''), input.end());
return input;
}
int main() {
std::string original = R"("Hei, 'Verden'!")";
std::string no_quotes = remove_quotes(original);
std::cout << no_quotes << std::endl;
return 0;
}
Kjør dette, og du får:
Hei, Verden!
Voilà! Anførselstegnene har forsvunnet.
Dypdykk
Anførselstegn har vært en tekstplage siden datateknologiens morgen. I gamle dager ville du se programmerere møysommelig loope gjennom hver karakter for å filtrere ut disse anførselstegnene. I dag har vi std::remove
i Standard Template Library (STL) for å gjøre det tunge løftet.
Alternativer? Klart det! Du kunne bruke regulære uttrykk med std::regex
for å målrette anførselstegn, men det er litt som å bruke en slegge til å knuse en nøtt - kraftfullt, men kan være overkill for enkle oppgaver. For de som foretrekker nyere C++ smaker, kan du eksperimentere med std::string_view
for ikke-modifiserende tilnærminger.
Når det gjelder implementeringen, husk at std::remove
faktisk ikke fjerner elementer fra beholderen; det omorganiserer de ikke-fjernede elementene fremover og returnerer en iterator forbi den nye slutten av rekkevidden. Derfor trenger vi erase
-metoden for å kutte av den uønskede halen.
Se også
- C++
std::remove
referanse: cppreference.com - Mer om
std::string
manipulasjon: cplusplus.com