The NS_StringSetDataRange function copies data into a section of the string's internal buffer. This is a low-level API.
#include "nsStringAPI.h"
nsresult NS_StringSetDataRange(
nsAString& aString,
PRUint32 aCutStart,
PRUint32 aCutLength,
const PRUnichar* aData,
PRUint32 aDataLength = PR_UINT32_MAX
);
The NS_StringSetDataRange function returns NS_OK if successful. Otherwise, it returns an error code.
// Replace all occurances of |matchVal| with |newVal|
void ReplaceSubstring(nsAString& str,
const nsAString& matchVal,
const nsAString& newVal)
{
const PRUnichar* sp, *mp, *np;
PRUint32 sl, ml, nl;
sl = NS_StringGetData(str, &sp);
ml = NS_StringGetData(matchVal, &mp);
nl = NS_StringGetData(newVal, &np);
for (const PRUnichar* iter = sp; iter <= sp + sl - ml; ++iter)
{
if (memcmp(iter, mp, ml) == 0)
{
PRUint32 offset = iter - sp;
NS_StringSetDataRange(str, offset, ml, np, nl);
sl = NS_StringGetData(str, &sp);
iter = sp + offset + nl - 1;
}
}
}
This function was frozen for Mozilla 1.7. See bug 239123 for details.