Summary
The NS_CStringSetDataRange function copies data into a section of the string's internal buffer. This is a low-level API.
#include "nsStringAPI.h" nsresult NS_CStringSetDataRange( nsACString& aString, PRUint32 aCutStart, PRUint32 aCutLength, const char* aData, PRUint32 aDataLength = PR_UINT32_MAX );
Parameters
- aString
- [in] A
nsACStringinstance to modify.
- aCutStart
- [in] The starting index of the section to replace, measured in storage units.
- aCutLength
- [in] The length of the section to replace, measured in storage units.
- aData
- [in] A raw character array to copy into this string.
- aDataLength
- [in] The length of aData, measured in storage units. If equal to
PR_UINT32_MAX, then aData is assumed to be null-terminated. Otherwise, aData need not be null terminated.
Return Values
The NS_CStringSetDataRange function returns NS_OK if successful. Otherwise, it returns an error code.
Example
// Replace all occurances of |matchVal| with |newVal|
void ReplaceSubstring(nsACString& str,
const nsACString& matchVal,
const nsACString& newVal)
{
const char* sp, *mp, *np;
PRUint32 sl, ml, nl;
sl = NS_CStringGetData(str, &sp);
ml = NS_CStringGetData(matchVal, &mp);
nl = NS_CStringGetData(newVal, &np);
for (const char* iter = sp; iter <= sp + sl - ml; ++iter)
{
if (memcmp(iter, mp, ml) == 0)
{
PRUint32 offset = iter - sp;
NS_CStringSetDataRange(str, offset, ml, np, nl);
sl = NS_CStringGetData(str, &sp);
iter = sp + offset + nl - 1;
}
}
}
History
This function was frozen for Mozilla 1.7. See bug 239123 for details.
