diff --git a/String.cpp b/String.cpp index ea267c58..a7788e8e 100644 --- a/String.cpp +++ b/String.cpp @@ -92,6 +92,23 @@ CString CString::AsLower() const { return sRet; } +unsigned int CString::Replace(const CString& sReplace, const CString& sWith) { + return CString::Replace(*this, sReplace, sWith); +} + +unsigned int CString::Replace(CString& sStr, const CString& sReplace, const CString& sWith) { + unsigned int uRet = 0; + size_type uPos = sStr.find(sReplace); + + while (uPos != npos) { + sStr.replace(uPos, sReplace.length(), sWith); + uPos = sStr.find(sReplace); + uRet++; + } + + return uRet; +} + CString CString::Token(unsigned int uPos, bool bRest, char cSep) const { string sRet; const char* p = c_str(); diff --git a/String.h b/String.h index a8ba2112..cac726b1 100644 --- a/String.h +++ b/String.h @@ -25,6 +25,8 @@ public: CString AsUpper() const; CString AsLower() const; + static unsigned int Replace(CString& sStr, const CString& sReplace, const CString& sWith); + unsigned int Replace(const CString& sReplace, const CString& sWith); CString Token(unsigned int uPos, bool bRest = false, char cSep = ' ') const; CString Ellipsize(unsigned int uLen) const; CString Left(unsigned int uCount) const;