port from perforce
This commit is contained in:
178
evoke-64k/ev10/StringHelper.cpp
Normal file
178
evoke-64k/ev10/StringHelper.cpp
Normal file
@@ -0,0 +1,178 @@
|
||||
/***********************************************************************************/
|
||||
/** \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
|
||||
************************************************************************************/
|
||||
Reference in New Issue
Block a user