We're looking for a person or people to help audit MDN to find places we could speed up. Is this you or someone you know? Check out the RFP: https://mzl.la/2IHcMiE


« XPCOM API Reference


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


[in] A nsACString instance to modify.
[in] The starting index of the section to replace, measured in storage units.
[in] The length of the section to replace, measured in storage units.
[in] A raw character array to copy into this string.
[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.


// 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;


This function was frozen for Mozilla 1.7. See bug 239123 for details.

See Also


Document Tags and Contributors

 Contributors to this page: Sheppy, DarinFisher, Nickolay, Dria
 Last updated by: Sheppy,