Algorithmus zum Abschneiden eines Strings

22/10/2013 - 17:19 von Markus Donath | Report spam
Hallo,

Klingt eigentlich ganz einfach: Schneide einen String vor dem ersten
Auftreten von _ gefolgt von einer Zahl ab!

Also soll z.B. aus 'LP_LE2W_GES_TGL_20131021_072459' der String
'LP_LE2W_GES_TGL' werden. Das funktioniert erstmal so:


string cut_str(string const& s) {
size_t pos(string::npos);
for(char c = '0'; c <= '9'; c++)
pos = min(pos, s.find(string("_") + c));
return pos != string::npos ? s.substr(0, pos) : s;
}

Das scheint mir aber etwas ineffizient. Ich habe ich ein wenig mit
boost::regex gespielt, leider ohne Erfolg.

Vielleicht hat jemand eine Idee.

Markus

“Programming is like sex: It may give some concrete results, but that is
not why we do it.”
Bjarne Stroustrup with apologies to Richard Feynman
 

Lesen sie die antworten

#1 Pether Hubert
22/10/2013 - 19:16 | Warnen spam
Markus Donath writes:
Klingt eigentlich ganz einfach: Schneide einen String vor dem ersten
Auftreten von _ gefolgt von einer Zahl ab!
Also soll z.B. aus 'LP_LE2W_GES_TGL_20131021_072459' der String
'LP_LE2W_GES_TGL' werden. Das funktioniert erstmal so:


[...]
Ich habe ich ein wenig mit boost::regex gespielt, leider ohne Erfolg.



Meine erste Idee waren auch regulàre Ausdrücke (naja, das dràngt sich
bei der Problemstellung ja erstmal auf), aber wenn Du nicht beschreibst,
welcher Art Deine Probleme damit sind, kann Dir auch niemand sinnvoll
dabei helfen.

Ansonsten fàllt mir noch std::string::find_first_of ein, das sollte Dein
Problem (zusammen mit std::string::substr o.à.) lösen.

HTH

Pether
Die Polizei ist auf den Spuren der Verfolgten.

Ähnliche fragen