diff --git a/docs/latex/wx/wxstring.tex b/docs/latex/wx/wxstring.tex index 20b9f19f69..57504f03e6 100644 --- a/docs/latex/wx/wxstring.tex +++ b/docs/latex/wx/wxstring.tex @@ -1110,7 +1110,7 @@ Minimizes the string's memory. This can be useful after a call to \membersection{wxString::StartsWith}\label{wxstringstartswith} -\constfunc{bool}{StartsWith}{\param{const wxChar }{*prefix}, \param{wxString }{*rest = NULL}} +\constfunc{bool}{StartsWith}{\param{const wxString\& }{prefix}, \param{wxString }{*rest = NULL}} This function can be used to test if the string starts with the specified {\it prefix}. If it does, the function will return \true and put the rest @@ -1121,7 +1121,7 @@ of the string (i.e. after the prefix) into {\it rest} string if it is not \membersection{wxString::EndsWith}\label{wxstringendswith} -\constfunc{bool}{EndsWith}{\param{const wxChar }{*suffix}, \param{wxString }{*rest = NULL}} +\constfunc{bool}{EndsWith}{\param{const wxString\& }{suffix}, \param{wxString }{*rest = NULL}} This function can be used to test if the string ends with the specified {\it suffix}. If it does, the function will return \true and put the diff --git a/include/wx/string.h b/include/wx/string.h index dac27573fa..c1cfbb5aa2 100644 --- a/include/wx/string.h +++ b/include/wx/string.h @@ -1464,11 +1464,11 @@ public: // check if the string starts with the given prefix and return the rest // of the string in the provided pointer if it is not NULL; otherwise // return false - bool StartsWith(const wxChar *prefix, wxString *rest = NULL) const; + bool StartsWith(const wxString& prefix, wxString *rest = NULL) const; // check if the string ends with the given suffix and return the // beginning of the string before the suffix in the provided pointer if // it is not NULL; otherwise return false - bool EndsWith(const wxChar *suffix, wxString *rest = NULL) const; + bool EndsWith(const wxString& suffix, wxString *rest = NULL) const; // get first nCount characters wxString Left(size_t nCount) const; diff --git a/src/common/string.cpp b/src/common/string.cpp index dac95cc926..3ae68d82e6 100644 --- a/src/common/string.cpp +++ b/src/common/string.cpp @@ -1065,28 +1065,15 @@ wxString wxString::Mid(size_t nFirst, size_t nCount) const // check that the string starts with prefix and return the rest of the string // in the provided pointer if it is not NULL, otherwise return false -bool wxString::StartsWith(const wxChar *prefix, wxString *rest) const +bool wxString::StartsWith(const wxString& prefix, wxString *rest) const { - wxASSERT_MSG( prefix, _T("invalid parameter in wxString::StartsWith") ); - - // first check if the beginning of the string matches the prefix: note - // that we don't have to check that we don't run out of this string as - // when we reach the terminating NUL, either prefix string ends too (and - // then it's ok) or we break out of the loop because there is no match - const wxChar *p = c_str(); - while ( *prefix ) - { - if ( *prefix++ != *p++ ) - { - // no match - return false; - } - } + if ( compare(0, prefix.length(), prefix) != 0 ) + return false; if ( rest ) { // put the rest of the string into provided pointer - *rest = p; + rest->assign(*this, prefix.length(), npos); } return true; @@ -1095,11 +1082,9 @@ bool wxString::StartsWith(const wxChar *prefix, wxString *rest) const // check that the string ends with suffix and return the rest of it in the // provided pointer if it is not NULL, otherwise return false -bool wxString::EndsWith(const wxChar *suffix, wxString *rest) const +bool wxString::EndsWith(const wxString& suffix, wxString *rest) const { - wxASSERT_MSG( suffix, _T("invalid parameter in wxString::EndssWith") ); - - int start = length() - wxStrlen(suffix); + int start = length() - suffix.length(); if ( start < 0 || compare(start, npos, suffix) != 0 ) return false;