179 lines
4.0 KiB
C++
179 lines
4.0 KiB
C++
/***********************************************************************************/
|
|
/** \file StringHelper.cpp
|
|
** \brief Implementation zur Klasse StringHelper
|
|
*************************************************************************************
|
|
** Autor: Christian Roesch
|
|
*************************************************************************************
|
|
** -tut nichts-
|
|
**
|
|
*//*********************************************************************************/
|
|
|
|
// includes
|
|
#ifdef EXTRACODE
|
|
#include "StringHelper.h"
|
|
|
|
#include <cstdio>
|
|
|
|
std::vector< char > FrameWork::StringHelper::m_SpaceTab;
|
|
FrameWork::StringHelper::StringHelperPreparer FrameWork::StringHelper::m_shpDummy;
|
|
|
|
// Methoden-Definitionen
|
|
|
|
namespace FrameWork
|
|
{
|
|
|
|
/***********************************************************************************/
|
|
/** Schneidet einen String an den Separatoren auseinander. Der vorderste Teil wird
|
|
*** abgeschnitten, falls der Separator gefunden wird. Der Eingabestring wird auf den
|
|
*** Teil hinter dem Seperator gestutzt
|
|
***
|
|
*** \param strInput [in\out] Ursprungsstring
|
|
*** \param strSeperator Seperator
|
|
*** \param der vorne abgeschnittene Teil
|
|
***
|
|
*** \return true, wenn Seperator gefunden
|
|
*//*********************************************************************************/
|
|
bool StringHelper::splitAt(
|
|
std::string& strInput,
|
|
std::string strSeperator,
|
|
std::string& strOutput )
|
|
{
|
|
size_t tStart= strInput.find( strSeperator );
|
|
|
|
if( tStart == std::string::npos )
|
|
{
|
|
return false;
|
|
}
|
|
|
|
strOutput= strInput.substr( 0, tStart );
|
|
strInput= strInput.substr( tStart + strSeperator.size() );
|
|
return true;
|
|
}
|
|
|
|
bool StringHelper::trimFront( std::string& strData, char cWhiteSpace )
|
|
{
|
|
int i= 0;
|
|
if( (int)strData.size() == 0 )
|
|
{
|
|
return false;
|
|
}
|
|
while( strData[ i ] == cWhiteSpace )
|
|
{
|
|
i++;
|
|
}
|
|
if( i > 0 )
|
|
{
|
|
strData= strData.substr( i );
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
bool StringHelper::trimBack( std::string& strData, char cWhiteSpace )
|
|
{
|
|
int i= (int)strData.size() - 1;
|
|
if( i == -1 )
|
|
{
|
|
return false;
|
|
}
|
|
while( strData[ i ] == cWhiteSpace )
|
|
{
|
|
i--;
|
|
}
|
|
if( i < (int)strData.size() - 1 )
|
|
{
|
|
strData= strData.substr( 0, i + 1 );
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
bool StringHelper::trim( std::string& strData, char cWhiteSpace )
|
|
{
|
|
bool bTrimmed= trimFront( strData, cWhiteSpace );
|
|
bTrimmed|= trimBack( strData, cWhiteSpace );
|
|
|
|
return bTrimmed;
|
|
}
|
|
|
|
bool StringHelper::trimFront( std::string& strData, std::vector< char >& WhiteSpaces )
|
|
{
|
|
bool bTrimmed;
|
|
|
|
do
|
|
{
|
|
bTrimmed= false;
|
|
for( int i= 0; i < (int)WhiteSpaces.size(); ++i )
|
|
{
|
|
bTrimmed|= trimFront( strData, WhiteSpaces[ i ] );
|
|
}
|
|
} while( bTrimmed );
|
|
|
|
return bTrimmed;
|
|
}
|
|
|
|
bool StringHelper::trimBack( std::string& strData, std::vector< char >& WhiteSpaces )
|
|
{
|
|
bool bTrimmed;
|
|
|
|
do
|
|
{
|
|
bTrimmed= false;
|
|
for( int i= 0; i < (int)WhiteSpaces.size(); ++i )
|
|
{
|
|
bTrimmed|= trimBack( strData, WhiteSpaces[ i ] );
|
|
}
|
|
} while( bTrimmed );
|
|
|
|
return bTrimmed;
|
|
}
|
|
|
|
bool StringHelper::trim( std::string& strData, std::vector< char >& WhiteSpaces )
|
|
{
|
|
bool bTrimmed= trimFront( strData, WhiteSpaces );
|
|
bTrimmed|= trimBack( strData, WhiteSpaces );
|
|
|
|
return bTrimmed;
|
|
}
|
|
|
|
std::vector< char >& StringHelper::getSpaceTab()
|
|
{
|
|
return m_SpaceTab;
|
|
}
|
|
|
|
void StringHelper::toUpper( std::string& strData )
|
|
{
|
|
for( int i= 0; i < (int)strData.size(); ++i )
|
|
{
|
|
strData[ i ]= toupper( strData[ i ] );
|
|
}
|
|
}
|
|
|
|
int StringHelper::searchAndRreplace(
|
|
const std::string &strSearchString,
|
|
const std::string &strReplaceString,
|
|
std::string& strData )
|
|
{
|
|
int iRet= 0;
|
|
|
|
std::string::size_type pos = strData.find(strSearchString, 0);
|
|
int intLengthSearch = strSearchString.length();
|
|
|
|
while(std::string::npos != pos)
|
|
{
|
|
iRet++;
|
|
strData.replace(pos, intLengthSearch, strReplaceString);
|
|
pos = strData.find(strSearchString, pos + intLengthSearch);
|
|
}
|
|
|
|
return iRet;
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
/************************************************************************************
|
|
** Ende der Datei: StringHelper.cpp
|
|
************************************************************************************/
|