mirror of
https://github.com/SFML/SFML.git
synced 2024-11-25 04:41:05 +08:00
Added String::replace() methods
Based on pull request #355 from abodelot
This commit is contained in:
parent
e074b6775e
commit
48db71fb69
@ -411,6 +411,32 @@ public :
|
||||
////////////////////////////////////////////////////////////
|
||||
std::size_t find(const String& str, std::size_t start = 0) const;
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// \brief Replace a substring with another string
|
||||
///
|
||||
/// This function replaces the substring that starts at index \a position
|
||||
/// and spans \a length characters with the string \a replaceWith.
|
||||
///
|
||||
/// \param position Index of the first character to be replaced
|
||||
/// \param length Number of characters to replace. You can pass InvalidPos to
|
||||
/// replace all characters until the end of the string.
|
||||
/// \param replaceWith String that replaces the given substring.
|
||||
///
|
||||
////////////////////////////////////////////////////////////
|
||||
void replace(std::size_t position, std::size_t length, const String& replaceWith);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// \brief Replace all occurrences of a substring with a replacement string
|
||||
///
|
||||
/// This function replaces all occurences of \a searchFor in this string
|
||||
/// with the string \a replaceWith.
|
||||
///
|
||||
/// \param searchFor The value being searched for
|
||||
/// \param replaceWith The value that replaces found \a searchFor values
|
||||
///
|
||||
////////////////////////////////////////////////////////////
|
||||
void replace(const String& searchFor, const String& replaceWith);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// \brief Get a pointer to the C-style array of characters
|
||||
///
|
||||
|
@ -281,6 +281,29 @@ std::size_t String::find(const String& str, std::size_t start) const
|
||||
}
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
void String::replace(std::size_t position, std::size_t length, const String& replaceWith)
|
||||
{
|
||||
m_string.replace(position, length, replaceWith.m_string);
|
||||
}
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
void String::replace(const String& searchFor, const String& replaceWith)
|
||||
{
|
||||
std::size_t step = replaceWith.getSize();
|
||||
std::size_t len = searchFor.getSize();
|
||||
std::size_t pos = find(searchFor);
|
||||
|
||||
// Replace each occurence of search
|
||||
while (pos != InvalidPos)
|
||||
{
|
||||
replace(pos, len, replaceWith);
|
||||
pos = find(searchFor, pos + step);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
const Uint32* String::getData() const
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user