Join MDN and developers like you at Mozilla's View Source conference, 12-14 September in Berlin, Germany. Learn more at https://viewsourceconf.org

NS_StringSetDataRange

« XPCOM API Reference

Summary

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

Parameters

aString
[in] A nsAString instance 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_StringSetDataRange function returns NS_OK if successful. Otherwise, it returns an error code.

Example 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;
      }
    }
  }

History

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

See Also

nsAString

Document Tags and Contributors

 Contributors to this page: Sheppy, Pmash
 Last updated by: Sheppy,