[Libreoffice] Easy Hack String replacement: SearchAndReplace

Stephan Bergmann sbergman at redhat.com
Mon Sep 26 00:43:35 PDT 2011


On 09/26/2011 01:30 AM, Neil Leathers wrote:
> I was looking into the Easy Hacks: "Removal/Replacement of the String/UniString/ByteString with OUString/OString once and for all" and ran into needing to translate a SearchAndReplaceAscii. Before launching into this set I wanted to confirm that instead of moving the SearchAndReplace functions to OUString and OString they should be moved to OUStringBuffer and OStringBuffer?

No, it would probably be better placed at OUString (where it returns a 
new OUString instance, leaving the original intact) than at 
OUStringBuffer (where it modifies this instance).  The reason is that 
putting it at OUStringBuffer would typically only pay off for repeated 
calls to SearchAndReplace or SearchAndReplaceAll, but such repeated 
calls are typically also subtly broken.  (Imagine code that shall 
replace in str1 all occurrences of "%foo%" with str2 and all occurrences 
of "%bar%" with str3;

   str1.SearchAndReplaceAll("%foo%", str2);
   str1.SearchAndReplaceAll("%bar%", str3);

is in general broken -- consider, e.g., the case where str2 is "%bar%".) 
  IIRC, there should be a thread on this in the interface-discuss or 
interface-announce mailing lists at openoffice.org.

-Stephan


More information about the LibreOffice mailing list