Benutzer-Werkzeuge

Webseiten-Werkzeuge


edv:prg:cpp:example:trim

Trim

Führende Leerzeichen entfernen:

zuTrimmendeString.erase(0, zuTrimmendeString.find_first_not_of(" "));

Leerzeichen am Ende entfernen:

zuTrimmendeString.erase(zuTrimmendeString.find_last_not_of(" ") + 1);

Auf beiden Seiten:

posBegin = zuTrimmendeString.find_first_not_of(" ");
posEnd   = zuTrimmendeString.find_last_not_of(" ");
zuTrimmendeString = zuTrimmendeString.substr(posBegin, posEnd - posBegin + 1);

Oder als Klasse mit statischen Methoden (hier nur ein Ausschnitt):

class stringutils
{
private:
	static const char* const WHITESPACE;
	static const char* const EMPTY;
 
public:
	static const string::size_type npos;
 
public:
	static string	trim      (const string& s, const char* trimChars = nullptr);
	static string	trim_left (const string& s, const char* trimChars = nullptr);
	static string	trim_right(const string& s, const char* trimChars = nullptr);
};
 
 
const char* const	stringutils::WHITESPACE = " \n\r\t";
const char* const	stringutils::EMPTY = "";
const string::size_type	stringutils::npos = string::npos;
 
 
inline string stringutils::trim_left(const string& s, const char* trimChars)
{
	size_t startpos = s.find_first_not_of(trimChars ? trimChars : WHITESPACE);
	return (startpos == string::npos) ? EMPTY : ((startpos == 0) ? s : s.substr(startpos));
}
 
inline string stringutils::trim_right(const string& s, const char* trimChars)
{
	size_t endpos = s.find_last_not_of(trimChars ? trimChars : WHITESPACE);
	return (endpos == string::npos) ? EMPTY : ((endpos == s.length() - 1) ? s : s.substr(0, endpos + 1));
}
 
inline string stringutils::trim(const string& s, const char* trimChars)
{
	size_t startpos = s.find_first_not_of(trimChars ? trimChars : WHITESPACE);
	if (startpos == string::npos) return EMPTY;
	size_t endpos = s.find_last_not_of(trimChars ? trimChars : WHITESPACE);
	if ((startpos == 0) && (endpos == s.length() - 1)) return s;
	return s.substr(startpos, endpos - startpos + 1);
}

In der Boost-Library ist diese Funktionalität bereits enthalten.


Stand: 02.06.2015
: Jürgen Kreick

EOF

edv/prg/cpp/example/trim.txt · Zuletzt geändert: 2020/01/11 01:23 von 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki