sc/source/ui/docshell/docsh.cxx |   46 ++++++++++++++++------------------------
 1 file changed, 19 insertions(+), 27 deletions(-)

New commits:
commit 35784dffccd6a950c72e9426a6d5bf0cca433aab
Author:     Julien Nabet <[email protected]>
AuthorDate: Sat Sep 17 21:17:16 2022 +0200
Commit:     Eike Rathke <[email protected]>
CommitDate: Sun Sep 18 22:41:27 2022 +0200

    Simplify by using replaceAll instead of insert in some loops (sc)
    
    Change-Id: I1defbbcd391230b928d57ebd049c514781bf720a
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/140107
    Tested-by: Eike Rathke <[email protected]>
    Reviewed-by: Eike Rathke <[email protected]>

diff --git a/sc/source/ui/docshell/docsh.cxx b/sc/source/ui/docshell/docsh.cxx
index ee240c5c3663..e4e5fc40c532 100644
--- a/sc/source/ui/docshell/docsh.cxx
+++ b/sc/source/ui/docshell/docsh.cxx
@@ -1928,18 +1928,6 @@ sal_Int32 getTextSepPos(
     return nPos;
 }
 
-template<typename StrT, typename StrBufT>
-void escapeTextSep(sal_Int32 nPos, const StrT& rStrDelim, StrT& rStr)
-{
-    while (nPos >= 0)
-    {
-        StrBufT aBuf(rStr);
-        aBuf.insert(nPos, rStrDelim);
-        rStr = aBuf.makeStringAndClear();
-        nPos = rStr.indexOf(rStrDelim, nPos+1+rStrDelim.getLength());
-    }
-}
-
 }
 
 void ScDocShell::AsciiSave( SvStream& rStream, const ScImportOptions& 
rAsciiOpt, SCTAB nTab )
@@ -2240,11 +2228,13 @@ void ScDocShell::AsciiSave( SvStream& rStream, const 
ScImportOptions& rAsciiOpt,
                     if ( eCharSet == RTL_TEXTENCODING_UNICODE )
                     {
                         bool bNeedQuotes = false;
-                        sal_Int32 nPos = getTextSepPos(
-                            aUniString, rAsciiOpt, cStrDelim, cDelim, 
bNeedQuotes);
-
-                        escapeTextSep<OUString, OUStringBuffer>(
-                            nPos, OUString(cStrDelim), aUniString);
+                        sal_Int32 nPos = getTextSepPos(aUniString, rAsciiOpt, 
cStrDelim, cDelim, bNeedQuotes);
+                        if (nPos >= 0)
+                        {
+                            OUString strFrom(cStrDelim);
+                            OUString strTo = strFrom + strFrom;
+                            aUniString = aUniString.replaceAll(strFrom, strTo);
+                        }
 
                         if ( bNeedQuotes || bForceQuotes )
                             rStream.WriteUniOrByteChar( cStrDelim, eCharSet );
@@ -2277,11 +2267,12 @@ void ScDocShell::AsciiSave( SvStream& rStream, const 
ScImportOptions& rAsciiOpt,
 
                             // search on re-decoded string
                             bool bNeedQuotes = false;
-                            sal_Int32 nPos = getTextSepPos(
-                                aStrDec, rAsciiOpt, aStrDelimDecoded, 
aDelimDecoded, bNeedQuotes);
-
-                            escapeTextSep<OUString, OUStringBuffer>(
-                                nPos, aStrDelimDecoded, aStrDec);
+                            sal_Int32 nPos = getTextSepPos(aStrDec, rAsciiOpt, 
aStrDelimDecoded, aDelimDecoded, bNeedQuotes);
+                            if (nPos >= 0)
+                            {
+                                OUString strTo = aStrDelimDecoded + 
aStrDelimDecoded;
+                                aStrDec = aStrDec.replaceAll(aStrDelimDecoded, 
strTo);
+                            }
 
                             // write byte re-encoded
                             if ( bNeedQuotes || bForceQuotes )
@@ -2296,11 +2287,12 @@ void ScDocShell::AsciiSave( SvStream& rStream, const 
ScImportOptions& rAsciiOpt,
 
                             // search on encoded string
                             bool bNeedQuotes = false;
-                            sal_Int32 nPos = getTextSepPos(
-                                aStrEnc, rAsciiOpt, aStrDelimEncoded, 
aDelimEncoded, bNeedQuotes);
-
-                            escapeTextSep<OString, OStringBuffer>(
-                                nPos, aStrDelimEncoded, aStrEnc);
+                            sal_Int32 nPos = getTextSepPos(aStrEnc, rAsciiOpt, 
aStrDelimEncoded, aDelimEncoded, bNeedQuotes);
+                            if (nPos >= 0)
+                            {
+                                OString strTo = aStrDelimEncoded + 
aStrDelimEncoded;
+                                aStrEnc = aStrEnc.replaceAll(aStrDelimEncoded, 
strTo);
+                            }
 
                             // write byte encoded
                             if ( bNeedQuotes || bForceQuotes )

Reply via email to