basic/source/classes/sbxmod.cxx                       |    2 
 basic/source/comp/token.cxx                           |    5 +
 basic/source/inc/token.hxx                            |    2 
 comphelper/source/misc/fileurl.cxx                    |    6 +-
 compilerplugins/clang/stringviewparam.cxx             |   11 +--
 connectivity/source/commontools/CommonTools.cxx       |    4 -
 dbaccess/source/ui/querydesign/QueryDesignView.cxx    |    2 
 dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx |    6 +-
 dbaccess/source/ui/querydesign/SelectionBrowseBox.hxx |    2 
 framework/inc/jobs/joburl.hxx                         |    2 
 framework/source/jobs/joburl.cxx                      |   17 +++--
 i18nlangtag/source/isolang/isolang.cxx                |   11 ++-
 include/basic/sbmod.hxx                               |    2 
 include/comphelper/fileurl.hxx                        |    2 
 include/connectivity/dbtools.hxx                      |    2 
 include/i18nlangtag/mslangid.hxx                      |    2 
 include/o3tl/string_view.hxx                          |   52 +++++++++++++++++-
 include/oox/core/filterdetect.hxx                     |    2 
 include/sfx2/linkmgr.hxx                              |    2 
 include/sfx2/objsh.hxx                                |    2 
 include/sot/exchange.hxx                              |    2 
 include/test/sheet/xspreadsheets2.hxx                 |    2 
 o3tl/qa/test-string_view.cxx                          |   31 ++++++++++
 oox/source/core/filterdetect.cxx                      |    5 +
 sc/source/core/inc/addinhelpid.hxx                    |    2 
 sc/source/core/tool/addinhelpid.cxx                   |    5 +
 sc/source/core/tool/interpr2.cxx                      |    5 +
 sc/source/filter/oox/defnamesbuffer.cxx               |    4 -
 sc/source/ui/dbgui/scuiasciiopt.cxx                   |    6 +-
 sc/source/ui/docshell/impex.cxx                       |    2 
 sc/source/ui/inc/impex.hxx                            |    2 
 sc/source/ui/inc/scuiasciiopt.hxx                     |    2 
 sd/source/filter/eppt/pptexanimations.cxx             |    4 -
 sd/source/filter/eppt/pptexanimations.hxx             |    2 
 sd/source/filter/eppt/pptx-animations-nodectx.cxx     |    9 ++-
 sd/source/filter/eppt/pptx-animations.cxx             |    8 +-
 sfx2/source/appl/appopen.cxx                          |    2 
 sfx2/source/appl/linkmgr2.cxx                         |    2 
 sfx2/source/doc/doctemplates.cxx                      |    6 +-
 sfx2/source/doc/objcont.cxx                           |    2 
 sfx2/source/inc/appopen.hxx                           |    2 
 sot/source/base/exchange.cxx                          |    6 +-
 svx/source/unodraw/unoshap2.cxx                       |    4 -
 sw/inc/SwAppletImpl.hxx                               |    2 
 sw/source/filter/basflt/fltini.cxx                    |    6 +-
 sw/source/filter/html/SwAppletImpl.cxx                |   41 +++++++-------
 sw/source/filter/html/htmlfld.cxx                     |    5 +
 sw/source/filter/html/htmlplug.cxx                    |    2 
 sw/source/filter/html/svxcss1.cxx                     |    5 +
 sw/source/filter/html/svxcss1.hxx                     |    2 
 sw/source/filter/html/swhtml.hxx                      |    4 -
 test/source/sheet/xspreadsheets2.cxx                  |   11 ++-
 ucb/source/ucp/webdav-curl/ContentProperties.cxx      |    8 +-
 xmloff/inc/prstylecond.hxx                            |    2 
 xmloff/source/style/prstylecond.cxx                   |    4 -
 xmloff/source/transform/TransformerBase.cxx           |    6 +-
 56 files changed, 225 insertions(+), 124 deletions(-)

New commits:
commit bc2101646bc6e63944c42500af5a15134b9b2d17
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Wed Apr 12 10:50:46 2023 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Fri Apr 14 07:54:28 2023 +0200

    loplugin:stringviewparam improvements
    
    improve the check by checking for methods that exclude
    using string_view, rather than checking for methods that
    __can__ use string_view, which leads to exposing
    some holes in our o3tl/string_view.hxx coverage.
    
    Change-Id: Ic9dd60441c671f502692f9cd2a1bb67301c4b960
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150277
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/basic/source/classes/sbxmod.cxx b/basic/source/classes/sbxmod.cxx
index 2453caa57c8c..cce2caca22b4 100644
--- a/basic/source/classes/sbxmod.cxx
+++ b/basic/source/classes/sbxmod.cxx
@@ -1735,7 +1735,7 @@ void 
SbModule::GetCodeCompleteDataFromParse(CodeCompleteDataCache& aCache)
 }
 
 
-OUString SbModule::GetKeywordCase( const OUString& sKeyword )
+OUString SbModule::GetKeywordCase( std::u16string_view sKeyword )
 {
     return SbiParser::GetKeywordCase( sKeyword );
 }
diff --git a/basic/source/comp/token.cxx b/basic/source/comp/token.cxx
index a060b3fd9318..814d5488f8ee 100644
--- a/basic/source/comp/token.cxx
+++ b/basic/source/comp/token.cxx
@@ -22,6 +22,7 @@
 
 #include <basic/sberrors.hxx>
 #include <sal/macros.h>
+#include <o3tl/string_view.hxx>
 #include <basiccharclass.hxx>
 #include <token.hxx>
 
@@ -558,11 +559,11 @@ bool SbiTokenizer::MayBeLabel( bool bNeedsColon )
 }
 
 
-OUString SbiTokenizer::GetKeywordCase( const OUString& sKeyword )
+OUString SbiTokenizer::GetKeywordCase( std::u16string_view sKeyword )
 {
     for( auto& rTok : aTokTable_Basic )
     {
-        if( sKeyword.equalsIgnoreAsciiCaseAscii(rTok.s) )
+        if( o3tl::equalsIgnoreAsciiCase(sKeyword, rTok.s) )
             return OStringToOUString(rTok.s, RTL_TEXTENCODING_ASCII_US);
     }
     return OUString();
diff --git a/basic/source/inc/token.hxx b/basic/source/inc/token.hxx
index 4230ff585b7a..9927e894e3b5 100644
--- a/basic/source/inc/token.hxx
+++ b/basic/source/inc/token.hxx
@@ -130,7 +130,7 @@ public:
         { return t >= FIRSTKWD && t <= LASTKWD; }
     static bool IsExtra( SbiToken t )
         { return t >= FIRSTEXTRA; }
-    static OUString GetKeywordCase( const OUString& sKeyword );
+    static OUString GetKeywordCase( std::u16string_view sKeyword );
 };
 
 
diff --git a/comphelper/source/misc/fileurl.cxx 
b/comphelper/source/misc/fileurl.cxx
index 4f361ab4ba7a..2515b28c5b30 100644
--- a/comphelper/source/misc/fileurl.cxx
+++ b/comphelper/source/misc/fileurl.cxx
@@ -21,7 +21,11 @@
 
 #include <comphelper/fileurl.hxx>
 #include <rtl/ustring.hxx>
+#include <o3tl/string_view.hxx>
 
-bool comphelper::isFileUrl(OUString const& url) { return 
url.startsWithIgnoreAsciiCase("file:"); }
+bool comphelper::isFileUrl(std::u16string_view url)
+{
+    return o3tl::matchIgnoreAsciiCase(url, "file:");
+}
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/compilerplugins/clang/stringviewparam.cxx 
b/compilerplugins/clang/stringviewparam.cxx
index 1540f03291c3..d16c306f6326 100644
--- a/compilerplugins/clang/stringviewparam.cxx
+++ b/compilerplugins/clang/stringviewparam.cxx
@@ -137,12 +137,11 @@ DeclRefExpr const* 
relevantCXXMemberCallExpr(CXXMemberCallExpr const* expr)
     else if (auto const i = d->getIdentifier())
     {
         auto const n = i->getName();
-        if (n == "endsWith" || n == "isEmpty" || n == "startsWith" || n == 
"subView"
-            || n == "indexOf" || n == "lastIndexOf" || n == "compareTo" || n 
== "match"
-            || n == "trim" || n == "toInt32" || n == "toUInt32" || n == 
"toInt64" || n == "toDouble"
-            || n == "equalsIgnoreAsciiCase" || n == "compareToIgnoreAsciiCase" 
|| n == "getToken"
-            || n == "copy" || n == "equalsAscii" || n == "equalsAsciiL"
-            || n == "matchIgnoreAsciiCase")
+        if (!(n == "getLength" || n == "getStr" || n == "convertToString" || n 
== "replace"
+              || n == "replaceAll" || n == "replaceAt" || n == "replaceFirst"
+              || n == "toAsciiLowerCase" || n == "toAsciiUpperCase" || n == 
"toUtf8"
+              || n == "iterateCodePoints" || n == "startsWithIgnoreAsciiCase" 
|| n == "toUInt64"
+              || n == "toFloat" || n == "toBoolean"))
         {
             good = true;
         }
diff --git a/connectivity/source/commontools/CommonTools.cxx 
b/connectivity/source/commontools/CommonTools.cxx
index 48e91f2fc72d..596be7097d45 100644
--- a/connectivity/source/commontools/CommonTools.cxx
+++ b/connectivity/source/commontools/CommonTools.cxx
@@ -221,10 +221,10 @@ OUString convertName2SQLName(const OUString& rName, 
std::u16string_view _rSpecia
     return aNewName.makeStringAndClear();
 }
 
-OUString quoteName(const OUString& _rQuote, const OUString& _rName)
+OUString quoteName(std::u16string_view _rQuote, const OUString& _rName)
 {
     OUString sName = _rName;
-    if( !_rQuote.isEmpty() && _rQuote.toChar() != ' ')
+    if( !_rQuote.empty() && _rQuote[0] != ' ')
         sName = _rQuote + _rName + _rQuote;
     return sName;
 }
diff --git a/dbaccess/source/ui/querydesign/QueryDesignView.cxx 
b/dbaccess/source/ui/querydesign/QueryDesignView.cxx
index 1c23e936b016..95c8e82c267d 100644
--- a/dbaccess/source/ui/querydesign/QueryDesignView.cxx
+++ b/dbaccess/source/ui/querydesign/QueryDesignView.cxx
@@ -97,7 +97,7 @@ namespace
                                     bool bHaving,
                                     bool _bAddOrOnOneLine);
 
-    OUString quoteTableAlias(bool _bQuote, const OUString& _sAliasName, const 
OUString& _sQuote)
+    OUString quoteTableAlias(bool _bQuote, const OUString& _sAliasName, 
std::u16string_view _sQuote)
     {
         OUString sRet;
         if ( _bQuote && !_sAliasName.isEmpty() )
diff --git a/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx 
b/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx
index f053d4b43dd1..eb6c666f532c 100644
--- a/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx
+++ b/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx
@@ -69,9 +69,9 @@ using namespace ::com::sun::star::accessibility;
 
 namespace
 {
-    bool isFieldNameAsterisk(const OUString& _sFieldName )
+    bool isFieldNameAsterisk(std::u16string_view _sFieldName )
     {
-        bool bAsterisk = _sFieldName.isEmpty() || _sFieldName.toChar() == '*';
+        bool bAsterisk = _sFieldName.empty() || _sFieldName[0] == '*';
         if ( !bAsterisk )
         {
             sal_Int32 nTokenCount = 
comphelper::string::getTokenCount(_sFieldName, '.');
@@ -576,7 +576,7 @@ void OSelectionBrowseBox::notifyFunctionFieldChanged(const 
OUString& _sOldFuncti
     RowModified(GetBrowseRow(BROW_FUNCTION_ROW), _nColumnId);
 }
 
-void OSelectionBrowseBox::clearEntryFunctionField(const OUString& 
_sFieldName,OTableFieldDescRef const & _pEntry, bool& _bListAction,sal_uInt16 
_nColumnId)
+void OSelectionBrowseBox::clearEntryFunctionField(std::u16string_view 
_sFieldName,OTableFieldDescRef const & _pEntry, bool& _bListAction,sal_uInt16 
_nColumnId)
 {
     if ( !(isFieldNameAsterisk( _sFieldName ) && (!_pEntry->isNoneFunction() 
|| _pEntry->IsGroupBy())) )
         return;
diff --git a/dbaccess/source/ui/querydesign/SelectionBrowseBox.hxx 
b/dbaccess/source/ui/querydesign/SelectionBrowseBox.hxx
index 3bddd9a9c996..d5e11c03e332 100644
--- a/dbaccess/source/ui/querydesign/SelectionBrowseBox.hxx
+++ b/dbaccess/source/ui/querydesign/SelectionBrowseBox.hxx
@@ -306,7 +306,7 @@ namespace dbaui
             @param  _bListAction
                 When <TRUE/> a list action will be created.
         */
-        void            clearEntryFunctionField(const OUString& 
_sFieldName,OTableFieldDescRef const & _pEntry, bool& _bListAction,sal_uInt16 
_nColumnId);
+        void            clearEntryFunctionField(std::u16string_view 
_sFieldName,OTableFieldDescRef const & _pEntry, bool& _bListAction,sal_uInt16 
_nColumnId);
 
         /** remove or insert the necessary function types
             @param  _pEntry
diff --git a/framework/inc/jobs/joburl.hxx b/framework/inc/jobs/joburl.hxx
index 3a227a375c78..23486ec2f4d9 100644
--- a/framework/inc/jobs/joburl.hxx
+++ b/framework/inc/jobs/joburl.hxx
@@ -96,7 +96,7 @@ class JobURL
 
     private:
 
-        static bool implst_split( const OUString& sPart           ,
+        static bool implst_split( std::u16string_view sPart           ,
                                       const char*        pPartIdentifier ,
                                             sal_Int32        nPartLength     ,
                                             OUString& rPartValue      ,
diff --git a/framework/source/jobs/joburl.cxx b/framework/source/jobs/joburl.cxx
index fc1424867d99..5533014edf80 100644
--- a/framework/source/jobs/joburl.cxx
+++ b/framework/source/jobs/joburl.cxx
@@ -24,6 +24,7 @@
 #include <jobs/joburl.hxx>
 
 #include <vcl/svapp.hxx>
+#include <o3tl/string_view.hxx>
 
 namespace framework{
 
@@ -205,14 +206,14 @@ bool JobURL::getService( /*OUT*/ OUString& sService ) 
const
     @return     <TRUE/> if the identifier could be found and the string was 
split.
                 <FALSE/> otherwise.
 */
-bool JobURL::implst_split( /*IN*/  const OUString& sPart           ,
+bool JobURL::implst_split( /*IN*/  std::u16string_view sPart           ,
                                /*IN*/  const char*        pPartIdentifier ,
                                /*IN*/        sal_Int32        nPartLength     ,
                                /*OUT*/       OUString& rPartValue      ,
                                /*OUT*/       OUString& rPartArguments  )
 {
     // first search for the given identifier
-    bool bPartFound = 
sPart.matchIgnoreAsciiCaseAsciiL(pPartIdentifier,nPartLength);
+    bool bPartFound = o3tl::matchIgnoreAsciiCase(sPart, 
std::string_view(pPartIdentifier,nPartLength));
 
     // If it exist - we can split the part and return sal_True.
     // Otherwise we do nothing and return sal_False.
@@ -222,16 +223,16 @@ bool JobURL::implst_split( /*IN*/  const OUString& sPart  
         ,
         // Do so - we set the return value with the whole part string.
         // Arguments will be set to an empty string as default.
         // If we detect the right sign - we split the arguments and overwrite 
the default.
-        OUString sValueAndArguments = sPart.copy(nPartLength);
-        OUString sValue             = sValueAndArguments;
+        std::u16string_view sValueAndArguments = sPart.substr(nPartLength);
+        std::u16string_view sValue             = sValueAndArguments;
         OUString sArguments;
 
-        sal_Int32 nArgStart = sValueAndArguments.indexOf('?');
-        if (nArgStart!=-1)
+        size_t nArgStart = sValueAndArguments.find('?');
+        if (nArgStart != std::u16string_view::npos)
         {
-            sValue     = sValueAndArguments.copy(0,nArgStart);
+            sValue     = sValueAndArguments.substr(0,nArgStart);
             ++nArgStart; // ignore '?'!
-            sArguments = sValueAndArguments.copy(nArgStart);
+            sArguments = sValueAndArguments.substr(nArgStart);
         }
 
         rPartValue     = sValue;
diff --git a/i18nlangtag/source/isolang/isolang.cxx 
b/i18nlangtag/source/isolang/isolang.cxx
index 192f979dcc0b..01b456f95a4a 100644
--- a/i18nlangtag/source/isolang/isolang.cxx
+++ b/i18nlangtag/source/isolang/isolang.cxx
@@ -18,6 +18,7 @@
  */
 
 #include <sal/log.hxx>
+#include <o3tl/string_view.hxx>
 #include <rtl/ustring.hxx>
 #include <rtl/string.hxx>
 
@@ -87,7 +88,7 @@ struct IsoLanguageScriptCountryEntry
 
         We don't have OUString::startsWithIgnoreAsciiCaseAscii()
      */
-    bool startsInIgnoreAsciiCase( const OUString & rStr ) const;
+    bool startsInIgnoreAsciiCase( std::u16string_view aStr ) const;
 };
 
 struct Bcp47CountryEntry
@@ -830,9 +831,9 @@ css::lang::Locale 
IsoLanguageScriptCountryEntry::getLocale() const
     return lang::Locale( I18NLANGTAG_QLT, OUString::createFromAscii( 
maCountry), getTagString());
 }
 
-bool IsoLanguageScriptCountryEntry::startsInIgnoreAsciiCase( const OUString & 
rStr ) const
+bool IsoLanguageScriptCountryEntry::startsInIgnoreAsciiCase( 
std::u16string_view aStr ) const
 {
-    return rStr.matchIgnoreAsciiCaseAsciiL( maLanguageScript, strlen( 
maLanguageScript) );
+    return o3tl::matchIgnoreAsciiCase(aStr, std::string_view(maLanguageScript) 
);
 }
 
 OUString Bcp47CountryEntry::getTagString() const
@@ -1208,12 +1209,12 @@ css::lang::Locale 
MsLangId::Conversion::lookupFallbackLocale(
 
 
 // static
-LanguageType MsLangId::Conversion::convertPrivateUseToLanguage( const 
OUString& rPriv )
+LanguageType MsLangId::Conversion::convertPrivateUseToLanguage( 
std::u16string_view rPriv )
 {
     for (const IsoLangOtherEntry* pPrivateEntry = aImplPrivateUseEntries;
             pPrivateEntry->mnLang != LANGUAGE_DONTKNOW; ++pPrivateEntry)
     {
-        if ( rPriv.equalsIgnoreAsciiCaseAscii( pPrivateEntry->mpLanguage ) )
+        if ( o3tl::equalsIgnoreAsciiCase(rPriv, pPrivateEntry->mpLanguage ) )
             return pPrivateEntry->mnLang;
     }
     return LANGUAGE_DONTKNOW;
diff --git a/include/basic/sbmod.hxx b/include/basic/sbmod.hxx
index eac88132bafc..4ff300b82aaa 100644
--- a/include/basic/sbmod.hxx
+++ b/include/basic/sbmod.hxx
@@ -135,7 +135,7 @@ public:
     void     GetCodeCompleteDataFromParse(CodeCompleteDataCache& aCache);
     const SbxArrayRef& GetMethods() const { return pMethods;}
     SbMethod*       FindMethod( const OUString&, SbxClassType );
-    static OUString GetKeywordCase( const OUString& sKeyword );
+    static OUString GetKeywordCase( std::u16string_view sKeyword );
 };
 
 typedef tools::SvRef<SbModule> SbModuleRef;
diff --git a/include/comphelper/fileurl.hxx b/include/comphelper/fileurl.hxx
index 27ac6b576b2e..0da07cdeb495 100644
--- a/include/comphelper/fileurl.hxx
+++ b/include/comphelper/fileurl.hxx
@@ -28,7 +28,7 @@
 namespace comphelper
 {
 // Return true iff url is an absolute URL of "file" scheme:
-COMPHELPER_DLLPUBLIC bool isFileUrl(OUString const& url);
+COMPHELPER_DLLPUBLIC bool isFileUrl(std::u16string_view url);
 }
 
 #endif
diff --git a/include/connectivity/dbtools.hxx b/include/connectivity/dbtools.hxx
index 58f34f170be8..17f329ad3302 100644
--- a/include/connectivity/dbtools.hxx
+++ b/include/connectivity/dbtools.hxx
@@ -367,7 +367,7 @@ namespace dbtools
 
     /** quote the given name with the given quote string.
     */
-    OOO_DLLPUBLIC_DBTOOLS OUString quoteName(const OUString& _rQuote, const 
OUString& _rName);
+    OOO_DLLPUBLIC_DBTOOLS OUString quoteName(std::u16string_view _rQuote, 
const OUString& _rName);
 
     /** quote the given table name (which may contain a catalog and a schema) 
according to the rules provided by the meta data
     */
diff --git a/include/i18nlangtag/mslangid.hxx b/include/i18nlangtag/mslangid.hxx
index f59e2d683def..e94b871ddc1e 100644
--- a/include/i18nlangtag/mslangid.hxx
+++ b/include/i18nlangtag/mslangid.hxx
@@ -261,7 +261,7 @@ public:
 
         /** Convert x-... privateuse, used by 
convertLocaleToLanguageImpl(Locale) */
         I18NLANGTAG_DLLPRIVATE static LanguageType convertPrivateUseToLanguage(
-                const OUString& rPriv );
+                std::u16string_view rPriv );
 
         /** Used by LanguageTag::canonicalize() */
         I18NLANGTAG_DLLPRIVATE static css::lang::Locale getOverride(
diff --git a/include/o3tl/string_view.hxx b/include/o3tl/string_view.hxx
index 91088aaae745..36b786e534e2 100644
--- a/include/o3tl/string_view.hxx
+++ b/include/o3tl/string_view.hxx
@@ -30,6 +30,12 @@ inline bool equalsAscii(std::u16string_view s1, 
std::string_view s2)
                   == 0;
 }
 
+// Like OUString::compareToAscii, but for std::u16string_view and 
std::string_view:
+inline int compareToAscii(std::u16string_view s1, std::string_view s2)
+{
+    return rtl_ustr_asciil_reverseCompare_WithLength(s1.data(), s1.size(), 
s2.data(), s2.size());
+};
+
 // Like OUString::equalsIgnoreAsciiCase, but for two std::u16string_view:
 inline bool equalsIgnoreAsciiCase(std::u16string_view s1, std::u16string_view 
s2)
 {
@@ -41,6 +47,14 @@ inline bool equalsIgnoreAsciiCase(std::u16string_view s1, 
std::u16string_view s2
            == 0;
 };
 
+inline bool equalsIgnoreAsciiCase(std::u16string_view s1, std::string_view s2)
+{
+    return s1.size() == s2.size()
+           && 
(rtl_ustr_ascii_shortenedCompareIgnoreAsciiCase_WithLength(s1.data(), s1.size(),
+                                                                         
s2.data(), s2.size())
+               == 0);
+}
+
 inline bool equalsIgnoreAsciiCase(std::string_view s1, std::string_view s2)
 {
     if (s1.size() != s2.size())
@@ -66,6 +80,41 @@ inline bool matchIgnoreAsciiCase(std::u16string_view s1, 
std::u16string_view s2,
            == 0;
 }
 
+// Like OUString::matchIgnoreAsciiCase, but for std::u16string_view and 
std::string_view:
+inline bool matchIgnoreAsciiCase(std::u16string_view s1, std::string_view s2,
+                                 sal_Int32 fromIndex = 0)
+{
+    return rtl_ustr_ascii_shortenedCompareIgnoreAsciiCase_WithLength(
+               s1.data() + fromIndex, s1.size() - fromIndex, s2.data(), 
s2.size())
+           == 0;
+}
+
+// Like OUString::endsWithIgnoreAsciiCase, but for std::u16string_view
+inline bool endsWithIgnoreAsciiCase(std::u16string_view s1, 
std::u16string_view s2,
+                                    std::u16string_view* rest = nullptr)
+{
+    auto const b = s2.size() <= s1.size() && matchIgnoreAsciiCase(s1, s2, 
s1.size() - s2.size());
+    if (b && rest != nullptr)
+    {
+        *rest = s1.substr(0, s1.size() - s2.size());
+    }
+    return b;
+}
+
+inline bool endsWithIgnoreAsciiCase(std::u16string_view s1, std::string_view 
s2,
+                                    std::u16string_view* rest = nullptr)
+{
+    auto const b = s2.size() <= s1.size()
+                   && rtl_ustr_ascii_compareIgnoreAsciiCase_WithLengths(
+                          s1.data() + s1.size() - s2.size(), s2.size(), 
s2.data(), s2.size())
+                          == 0;
+    if (b && rest != nullptr)
+    {
+        *rest = s1.substr(0, s1.size() - s2.size());
+    }
+    return b;
+}
+
 // Similar to O[U]String::getToken, returning the first token of a 
std::[u16]string_view starting
 // at a given position.
 //
@@ -456,6 +505,7 @@ inline double toDouble(std::string_view str)
 {
     return rtl_math_stringToDouble(str.data(), str.data() + str.size(), '.', 
0, nullptr, nullptr);
 }
-}
+
+} // namespace
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s 
cinkeys+=0=break: */
diff --git a/include/oox/core/filterdetect.hxx 
b/include/oox/core/filterdetect.hxx
index 3e3a0df96fa5..8b01bcc5f285 100644
--- a/include/oox/core/filterdetect.hxx
+++ b/include/oox/core/filterdetect.hxx
@@ -84,7 +84,7 @@ public:
 private:
     void                parseRelationship( const AttributeList& rAttribs );
 
-    OUString            getFilterNameFromContentType( std::u16string_view 
rContentType, const OUString& rFileName );
+    OUString            getFilterNameFromContentType( std::u16string_view 
rContentType, std::u16string_view rFileName );
     void                parseContentTypesDefault( const AttributeList& 
rAttribs );
     void                parseContentTypesOverride( const AttributeList& 
rAttribs );
 
diff --git a/include/sfx2/linkmgr.hxx b/include/sfx2/linkmgr.hxx
index e4f58a996480..dddd8a54e288 100644
--- a/include/sfx2/linkmgr.hxx
+++ b/include/sfx2/linkmgr.hxx
@@ -157,7 +157,7 @@ public:
 
     // if the mimetype says graphic/bitmap/gdimetafile then get the
     // graphic from the Any. Return says no errors
-    bool GetGraphicFromAny(const OUString& rMimeType,
+    bool GetGraphicFromAny(std::u16string_view rMimeType,
                            const css::uno::Any & rValue,
                            Graphic& rGrf,
                            weld::Window* pParentWin);
diff --git a/include/sfx2/objsh.hxx b/include/sfx2/objsh.hxx
index e3a5b4a022f1..3a88131b8f27 100644
--- a/include/sfx2/objsh.hxx
+++ b/include/sfx2/objsh.hxx
@@ -418,7 +418,7 @@ public:
     void                        SetUseThumbnailSave( bool _bNew );
     void                        SetLoadReadonly( bool _bReadonly );
     void                        SetSaveVersionOnClose( bool bSet );
-    void                        ResetFromTemplate( const OUString& 
rTemplateName, const OUString& rFileName );
+    void                        ResetFromTemplate( const OUString& 
rTemplateName, std::u16string_view rFileName );
 
     // TODO/LATER: the following two methods should be replaced by 
Get/SetModifPasswordInfo in future
     sal_uInt32                  GetModifyPasswordHash() const;
diff --git a/include/sot/exchange.hxx b/include/sot/exchange.hxx
index c7fed6d3b851..f778d86a9714 100644
--- a/include/sot/exchange.hxx
+++ b/include/sot/exchange.hxx
@@ -120,7 +120,7 @@ public:
     static bool         GetFormatDataFlavor( SotClipboardFormatId nFormat, 
css::datatransfer::DataFlavor& rFlavor );
     static OUString     GetFormatMimeType( SotClipboardFormatId nFormat );
     static bool         IsInternal( const SvGlobalName& );
-    static SotClipboardFormatId   GetFormatIdFromMimeType( const OUString& 
rMimeType );
+    static SotClipboardFormatId   GetFormatIdFromMimeType( std::u16string_view 
rMimeType );
 
     // same for XTransferable interface
     static sal_uInt8   GetExchangeAction(
diff --git a/include/test/sheet/xspreadsheets2.hxx 
b/include/test/sheet/xspreadsheets2.hxx
index 1b8d9b8023e3..30311a40c42e 100644
--- a/include/test/sheet/xspreadsheets2.hxx
+++ b/include/test/sheet/xspreadsheets2.hxx
@@ -48,7 +48,7 @@ private:
     css::uno::Reference< css::sheet::XSpreadsheetDocument> getDoc(const 
OUString&);
     static css::uno::Reference< css::sheet::XNamedRanges> 
getNamedRanges(css::uno::Reference< css::sheet::XSpreadsheetDocument > const &);
     void importSheetToCopy();
-    static bool isExternalReference(const OUString& aDestContent, 
std::u16string_view aSrcContent );
+    static bool isExternalReference(std::u16string_view aDestContent, 
std::u16string_view aSrcContent );
 
     css::uno::Reference< css::sheet::XSpreadsheetDocument> xDestDoc;
     css::uno::Reference< css::sheet::XSpreadsheet > xDestSheet;
diff --git a/o3tl/qa/test-string_view.cxx b/o3tl/qa/test-string_view.cxx
index 37cb4118a8e2..a95afc923c2c 100644
--- a/o3tl/qa/test-string_view.cxx
+++ b/o3tl/qa/test-string_view.cxx
@@ -699,6 +699,37 @@ private:
             o3tl::getToken(suTokenStr, 0, ';', n);
             // should not GPF with negative index
         }
+        {
+            CPPUNIT_ASSERT_MESSAGE("compareToAscii",
+                                   OUString(u"aaa").compareToAscii("aa")
+                                       > 0); // just for comparison to 
following line
+            CPPUNIT_ASSERT_MESSAGE("compareToAscii", 
o3tl::compareToAscii(u"aaa", "aa") > 0);
+
+            OUString aa(u"aa");
+            CPPUNIT_ASSERT_MESSAGE("compareToAscii",
+                                   aa.compareToAscii("aaa")
+                                       < 0); // just for comparison to 
following line
+            CPPUNIT_ASSERT_MESSAGE("compareToAscii", 
o3tl::compareToAscii(u"aa", "aaa") < 0);
+
+            CPPUNIT_ASSERT_MESSAGE(
+                "equalsIgnoreAsciiCase",
+                aa.equalsIgnoreAsciiCase("AA")); // just for comparison to 
following line
+            CPPUNIT_ASSERT_MESSAGE("equalsIgnoreAsciiCase",
+                                   o3tl::equalsIgnoreAsciiCase(u"aa", "AA"));
+
+            CPPUNIT_ASSERT_MESSAGE(
+                "matchIgnoreAsciiCase",
+                aa.matchIgnoreAsciiCase("a")); // just for comparison to 
following line
+            CPPUNIT_ASSERT_MESSAGE("matchIgnoreAsciiCase", 
o3tl::matchIgnoreAsciiCase(u"aa", "a"));
+
+            CPPUNIT_ASSERT_MESSAGE(
+                "endsWithIgnoreAsciiCase",
+                aa.endsWithIgnoreAsciiCase("a")); // just for comparison to 
following line
+            CPPUNIT_ASSERT_MESSAGE("endsWithIgnoreAsciiCase",
+                                   o3tl::endsWithIgnoreAsciiCase(u"aa", "a"));
+            CPPUNIT_ASSERT_MESSAGE("endsWithIgnoreAsciiCase",
+                                   o3tl::endsWithIgnoreAsciiCase(u"aa", u"a"));
+        }
     }
 };
 
diff --git a/oox/source/core/filterdetect.cxx b/oox/source/core/filterdetect.cxx
index 6f22d612aa13..7c52f81e615d 100644
--- a/oox/source/core/filterdetect.cxx
+++ b/oox/source/core/filterdetect.cxx
@@ -35,6 +35,7 @@
 
 #include <com/sun/star/uri/UriReferenceFactory.hpp>
 #include <com/sun/star/beans/NamedValue.hpp>
+#include <o3tl/string_view.hxx>
 #include <utility>
 
 using namespace ::com::sun::star;
@@ -175,9 +176,9 @@ void FilterDetectDocHandler::parseRelationship( const 
AttributeList& rAttribs )
     }
 }
 
-OUString FilterDetectDocHandler::getFilterNameFromContentType( 
std::u16string_view rContentType, const OUString& rFileName )
+OUString FilterDetectDocHandler::getFilterNameFromContentType( 
std::u16string_view rContentType, std::u16string_view rFileName )
 {
-    bool bDocm = rFileName.endsWithIgnoreAsciiCase(".docm");
+    bool bDocm = o3tl::endsWithIgnoreAsciiCase(rFileName, ".docm");
 
     if( rContentType == 
u"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"
 && !bDocm )
     {
diff --git a/sc/source/core/inc/addinhelpid.hxx 
b/sc/source/core/inc/addinhelpid.hxx
index 1130cb844d58..ccc5406d8fbb 100644
--- a/sc/source/core/inc/addinhelpid.hxx
+++ b/sc/source/core/inc/addinhelpid.hxx
@@ -39,7 +39,7 @@ public:
     void                        SetServiceName( std::u16string_view 
rServiceName );
 
     /** @return  The help ID of the function with given built-in name or 0 if 
not found. */
-    OUString                GetHelpId( const OUString& rFuncName ) const;
+    OUString                GetHelpId( std::u16string_view rFuncName ) const;
 };
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/core/tool/addinhelpid.cxx 
b/sc/source/core/tool/addinhelpid.cxx
index 9a7cd9213749..9c44e269d00e 100644
--- a/sc/source/core/tool/addinhelpid.cxx
+++ b/sc/source/core/tool/addinhelpid.cxx
@@ -19,6 +19,7 @@
 
 #include <addinhelpid.hxx>
 #include <helpids.h>
+#include <o3tl/string_view.hxx>
 
 // A struct containing the built-in function name and the built-in help ID.
 struct ScUnoAddInHelpId
@@ -183,7 +184,7 @@ void ScUnoAddInHelpIdGenerator::SetServiceName( 
std::u16string_view rServiceName
     nArrayCount = nSize / sizeof( ScUnoAddInHelpId );
 }
 
-OUString ScUnoAddInHelpIdGenerator::GetHelpId( const OUString& rFuncName ) 
const
+OUString ScUnoAddInHelpIdGenerator::GetHelpId( std::u16string_view rFuncName ) 
const
 {
     if( !pCurrHelpIds || !nArrayCount )
         return {};
@@ -194,7 +195,7 @@ OUString ScUnoAddInHelpIdGenerator::GetHelpId( const 
OUString& rFuncName ) const
     while( pFirst <= pLast )
     {
         const ScUnoAddInHelpId* pMiddle = pFirst + (pLast - pFirst) / 2;
-        sal_Int32 nResult = rFuncName.compareToAscii( pMiddle->pFuncName );
+        sal_Int32 nResult = o3tl::compareToAscii( rFuncName, 
pMiddle->pFuncName );
         if( !nResult )
             return pMiddle->sHelpId;
         else if( nResult < 0 )
diff --git a/sc/source/core/tool/interpr2.cxx b/sc/source/core/tool/interpr2.cxx
index 52bab34899ff..b8fe537ef3f9 100644
--- a/sc/source/core/tool/interpr2.cxx
+++ b/sc/source/core/tool/interpr2.cxx
@@ -22,6 +22,7 @@
 
 #include <comphelper/string.hxx>
 #include <o3tl/float_int_conversion.hxx>
+#include <o3tl/string_view.hxx>
 #include <sfx2/bindings.hxx>
 #include <sfx2/linkmgr.hxx>
 #include <sfx2/objsh.hxx>
@@ -3218,7 +3219,7 @@ void ScInterpreter::ScHyperLink()
     http://ec.europa.eu/economy_finance/euro/adoption/conversion/
     http://ec.europa.eu/economy_finance/euro/countries/
  */
-static bool lclConvertMoney( const OUString& aSearchUnit, double& rfRate, int& 
rnDec )
+static bool lclConvertMoney( std::u16string_view aSearchUnit, double& rfRate, 
int& rnDec )
 {
     struct ConvertInfo
     {
@@ -3251,7 +3252,7 @@ static bool lclConvertMoney( const OUString& aSearchUnit, 
double& rfRate, int& r
     };
 
     for (const auto & i : aConvertTable)
-        if ( aSearchUnit.equalsIgnoreAsciiCaseAscii( i.pCurrText ) )
+        if ( o3tl::equalsIgnoreAsciiCase( aSearchUnit, i.pCurrText ) )
         {
             rfRate = i.fRate;
             rnDec  = i.nDec;
diff --git a/sc/source/filter/oox/defnamesbuffer.cxx 
b/sc/source/filter/oox/defnamesbuffer.cxx
index 4f8155cae40e..e79b56211105 100644
--- a/sc/source/filter/oox/defnamesbuffer.cxx
+++ b/sc/source/filter/oox/defnamesbuffer.cxx
@@ -107,10 +107,10 @@ sal_Unicode lclGetBuiltinIdFromPrefixedName( 
std::u16string_view aModelName )
 }
 
 /** returns the built-in name identifier from a built-in base name, e.g. 
'Print_Area'. */
-sal_Unicode lclGetBuiltinIdFromBaseName( const OUString& rModelName )
+sal_Unicode lclGetBuiltinIdFromBaseName( std::u16string_view rModelName )
 {
     for( sal_Unicode cBuiltinId = 0; cBuiltinId < SAL_N_ELEMENTS( 
sppcBaseNames ); ++cBuiltinId )
-        if( rModelName.equalsIgnoreAsciiCaseAscii( sppcBaseNames[ cBuiltinId ] 
) )
+        if( o3tl::equalsIgnoreAsciiCase( rModelName, sppcBaseNames[ cBuiltinId 
] ) )
             return cBuiltinId;
     return BIFF_DEFNAME_UNKNOWN;
 }
diff --git a/sc/source/ui/dbgui/scuiasciiopt.cxx 
b/sc/source/ui/dbgui/scuiasciiopt.cxx
index 126689d7bce8..df8f77c8553c 100644
--- a/sc/source/ui/dbgui/scuiasciiopt.cxx
+++ b/sc/source/ui/dbgui/scuiasciiopt.cxx
@@ -308,7 +308,7 @@ static void lcl_SaveSeparators(
     aItem.PutProperties(aNames, aValues);
 }
 
-ScImportAsciiDlg::ScImportAsciiDlg(weld::Window* pParent, const OUString& 
aDatName,
+ScImportAsciiDlg::ScImportAsciiDlg(weld::Window* pParent, std::u16string_view 
aDatName,
                                    SvStream* pInStream, ScImportAsciiCall 
eCall)
     : GenericDialogController(pParent, "modules/scalc/ui/textimportcsv.ui", 
"TextImportCsvDialog")
     , mpDatStream(pInStream)
@@ -353,7 +353,7 @@ ScImportAsciiDlg::ScImportAsciiDlg(weld::Window* pParent, 
const OUString& aDatNa
         case SC_IMPORTFILE:
             if (!comphelper::LibreOfficeKit::isActive())
             {
-                aName += " - [" + aDatName + "]";
+                aName += OUString::Concat(" - [") + aDatName + "]";
                 m_xDialog->set_title(aName);
             }
             break;
@@ -362,7 +362,7 @@ ScImportAsciiDlg::ScImportAsciiDlg(weld::Window* pParent, 
const OUString& aDatNa
     }
 
     // To be able to prefill the correct values based on the file extension
-    bool bIsTSV = (aDatName.endsWithIgnoreAsciiCase(".tsv") || 
aDatName.endsWithIgnoreAsciiCase(".tab"));
+    bool bIsTSV = (o3tl::endsWithIgnoreAsciiCase(aDatName, ".tsv") || 
o3tl::endsWithIgnoreAsciiCase(aDatName, ".tab"));
 
     // Default options are set in 
officecfg/registry/schema/org/openoffice/Office/Calc.xcs
     OUString sFieldSeparators(",;\t");
diff --git a/sc/source/ui/docshell/impex.cxx b/sc/source/ui/docshell/impex.cxx
index 87735c2087a3..507508419a3d 100644
--- a/sc/source/ui/docshell/impex.cxx
+++ b/sc/source/ui/docshell/impex.cxx
@@ -284,7 +284,7 @@ void ScImportExport::EndPaste(bool bAutoRowHeight)
 
 }
 
-bool ScImportExport::ExportData( const OUString& rMimeType,
+bool ScImportExport::ExportData( std::u16string_view rMimeType,
                                  css::uno::Any & rValue )
 {
     SvMemoryStream aStrm;
diff --git a/sc/source/ui/inc/impex.hxx b/sc/source/ui/inc/impex.hxx
index 2631500e98a9..e30182f7e242 100644
--- a/sc/source/ui/inc/impex.hxx
+++ b/sc/source/ui/inc/impex.hxx
@@ -144,7 +144,7 @@ public:
     bool ImportStream( SvStream&, const OUString& rBaseURL, 
SotClipboardFormatId );
     bool ExportStream( SvStream&, const OUString& rBaseURL, 
SotClipboardFormatId );
 
-    bool ExportData( const OUString& rMimeType,
+    bool ExportData( std::u16string_view rMimeType,
                      css::uno::Any & rValue  );
 
     // after import
diff --git a/sc/source/ui/inc/scuiasciiopt.hxx 
b/sc/source/ui/inc/scuiasciiopt.hxx
index ee7f512b3548..f966bd2be895 100644
--- a/sc/source/ui/inc/scuiasciiopt.hxx
+++ b/sc/source/ui/inc/scuiasciiopt.hxx
@@ -82,7 +82,7 @@ class ScImportAsciiDlg : public weld::GenericDialogController
 
 public:
                                 ScImportAsciiDlg(
-                                    weld::Window* pParent, const OUString& 
aDatName,
+                                    weld::Window* pParent, std::u16string_view 
aDatName,
                                     SvStream* pInStream, ScImportAsciiCall 
eCall );
                                 virtual ~ScImportAsciiDlg() override;
 
diff --git a/sd/source/filter/eppt/pptexanimations.cxx 
b/sd/source/filter/eppt/pptexanimations.cxx
index faef2b48522e..cbc65ceff792 100644
--- a/sd/source/filter/eppt/pptexanimations.cxx
+++ b/sd/source/filter/eppt/pptexanimations.cxx
@@ -1515,7 +1515,7 @@ void AnimationExporter::exportAnimateSet( SvStream& 
rStrm, const Reference< XAni
     exportAnimateTarget( rStrm, xNode, 0, nAfterEffectType );
 }
 
-sal_uInt32 AnimationExporter::GetValueTypeForAttributeName( const OUString& 
rAttributeName )
+sal_uInt32 AnimationExporter::GetValueTypeForAttributeName( 
std::u16string_view rAttributeName )
 {
     sal_uInt32 nValueType = 0;
 
@@ -1555,7 +1555,7 @@ sal_uInt32 
AnimationExporter::GetValueTypeForAttributeName( const OUString& rAtt
     const Entry* pPtr = &lcl_attributeMap[ 0 ];
     while( pPtr->pName )
     {
-        if ( rAttributeName.equalsIgnoreAsciiCaseAscii( pPtr->pName ) )
+        if ( o3tl::equalsIgnoreAsciiCase( rAttributeName, pPtr->pName ) )
         {
             nValueType = pPtr->nType;
             break;
diff --git a/sd/source/filter/eppt/pptexanimations.hxx 
b/sd/source/filter/eppt/pptexanimations.hxx
index b898c0de0a93..006a5fe062e7 100644
--- a/sd/source/filter/eppt/pptexanimations.hxx
+++ b/sd/source/filter/eppt/pptexanimations.hxx
@@ -125,7 +125,7 @@ public:
         static void GetUserData( const css::uno::Sequence< 
css::beans::NamedValue >& rUserData, const css::uno::Any ** pAny, std::size_t 
nLen );
         static sal_uInt32 TranslatePresetSubType( const sal_uInt32 
nPresetClass, const sal_uInt32 nPresetId, std::u16string_view rPresetSubType );
         static sal_uInt32 GetPresetID( std::u16string_view aPreset, sal_uInt32 
nAPIPresetClass, bool& bPresetId );
-        static sal_uInt32 GetValueTypeForAttributeName( const OUString& 
rAttributeName );
+        static sal_uInt32 GetValueTypeForAttributeName( std::u16string_view 
rAttributeName );
 
     static const char* FindTransitionName( const sal_Int16 nType, const 
sal_Int16 nSubType, const bool bDirection );
     static css::uno::Reference< css::drawing::XShape > getTargetElementShape( 
const css::uno::Any& rAny, sal_Int32& rBegin, sal_Int32& rEnd, bool& 
rParagraphTarget );
diff --git a/sd/source/filter/eppt/pptx-animations-nodectx.cxx 
b/sd/source/filter/eppt/pptx-animations-nodectx.cxx
index e538a0ca4e99..585917b4f864 100644
--- a/sd/source/filter/eppt/pptx-animations-nodectx.cxx
+++ b/sd/source/filter/eppt/pptx-animations-nodectx.cxx
@@ -23,6 +23,8 @@
 #include <com/sun/star/beans/XPropertySet.hpp>
 
 #include <o3tl/any.hxx>
+#include <o3tl/string_view.hxx>
+
 using ::com::sun::star::beans::NamedValue;
 using ::com::sun::star::beans::XPropertySet;
 using ::com::sun::star::drawing::XShape;
@@ -49,13 +51,14 @@ bool isValidTarget(const Any& rTarget)
     return (rTarget >>= aParagraphTarget) && aParagraphTarget.Shape.is();
 }
 
-bool IsAudioURL(const OUString& rURL)
+bool IsAudioURL(std::u16string_view rURL)
 {
-    return rURL.endsWithIgnoreAsciiCase(".wav") || 
rURL.endsWithIgnoreAsciiCase(".m4a");
+    return o3tl::endsWithIgnoreAsciiCase(rURL, ".wav")
+           || o3tl::endsWithIgnoreAsciiCase(rURL, ".m4a");
 }
 
 /// Returns if rURL has an extension which is a video format.
-bool IsVideoURL(const OUString& rURL) { return 
rURL.endsWithIgnoreAsciiCase(".mp4"); }
+bool IsVideoURL(std::u16string_view rURL) { return 
o3tl::endsWithIgnoreAsciiCase(rURL, ".mp4"); }
 
 bool initCondList(const Any& rAny, std::vector<Cond>& rList, bool 
bIsMainSeqChild)
 {
diff --git a/sd/source/filter/eppt/pptx-animations.cxx 
b/sd/source/filter/eppt/pptx-animations.cxx
index 1effa82a9ab8..9e4e1b3d2fd8 100644
--- a/sd/source/filter/eppt/pptx-animations.cxx
+++ b/sd/source/filter/eppt/pptx-animations.cxx
@@ -18,6 +18,7 @@
  */
 
 #include <o3tl/any.hxx>
+#include <o3tl/string_view.hxx>
 #include <oox/token/tokens.hxx>
 #include "epptooxml.hxx"
 #include <sax/fshelper.hxx>
@@ -508,13 +509,14 @@ public:
 };
 
 /// Returns if rURL has an extension which is an audio format.
-bool IsAudioURL(const OUString& rURL)
+bool IsAudioURL(std::u16string_view rURL)
 {
-    return rURL.endsWithIgnoreAsciiCase(".wav") || 
rURL.endsWithIgnoreAsciiCase(".m4a");
+    return o3tl::endsWithIgnoreAsciiCase(rURL, ".wav")
+           || o3tl::endsWithIgnoreAsciiCase(rURL, ".m4a");
 }
 
 /// Returns if rURL has an extension which is a video format.
-bool IsVideoURL(const OUString& rURL) { return 
rURL.endsWithIgnoreAsciiCase(".mp4"); }
+bool IsVideoURL(std::u16string_view rURL) { return 
o3tl::endsWithIgnoreAsciiCase(rURL, ".mp4"); }
 }
 
 namespace oox::core
diff --git a/sfx2/source/appl/appopen.cxx b/sfx2/source/appl/appopen.cxx
index 3dd2383c1074..b3b11d626362 100644
--- a/sfx2/source/appl/appopen.cxx
+++ b/sfx2/source/appl/appopen.cxx
@@ -101,7 +101,7 @@ using namespace ::com::sun::star::container;
 using namespace ::cppu;
 using namespace ::sfx2;
 
-void SetTemplate_Impl( const OUString &rFileName,
+void SetTemplate_Impl( std::u16string_view rFileName,
                         const OUString &rLongName,
                         SfxObjectShell *pDoc)
 {
diff --git a/sfx2/source/appl/linkmgr2.cxx b/sfx2/source/appl/linkmgr2.cxx
index aeefbf10da20..6a3e0c7e8821 100644
--- a/sfx2/source/appl/linkmgr2.cxx
+++ b/sfx2/source/appl/linkmgr2.cxx
@@ -506,7 +506,7 @@ SotClipboardFormatId LinkManager::RegisterStatusInfoId()
     return nFormat;
 }
 
-bool LinkManager::GetGraphicFromAny(const OUString& rMimeType,
+bool LinkManager::GetGraphicFromAny(std::u16string_view rMimeType,
                                     const css::uno::Any & rValue,
                                     Graphic& rGraphic,
                                     weld::Window* pParentWin)
diff --git a/sfx2/source/doc/doctemplates.cxx b/sfx2/source/doc/doctemplates.cxx
index 06f125ec9e15..e51e49481d89 100644
--- a/sfx2/source/doc/doctemplates.cxx
+++ b/sfx2/source/doc/doctemplates.cxx
@@ -271,7 +271,7 @@ private:
                                                                 Content& 
aNewFolder );
     static OUString         CreateNewUniqueFileWithPrefix( std::u16string_view 
aPath,
                                                                 const 
OUString& aPrefix,
-                                                                const 
OUString& aExt );
+                                                                
std::u16string_view aExt );
 
     std::vector< beans::StringPair > ReadUINamesForTemplateDir_Impl( 
std::u16string_view aUserPath );
     bool                    UpdateUINamesForTemplateDir_Impl( 
std::u16string_view aUserPath,
@@ -841,7 +841,7 @@ bool SfxDocTplService::CreateNewUniqueFolderWithPrefix( 
std::u16string_view aPat
 
 OUString SfxDocTplService::CreateNewUniqueFileWithPrefix( std::u16string_view 
aPath,
                                                                         const 
OUString& aPrefix,
-                                                                        const 
OUString& aExt )
+                                                                        
std::u16string_view aExt )
 {
     OUString aNewFileURL;
     INetURLObject aDirPath( aPath );
@@ -858,7 +858,7 @@ OUString SfxDocTplService::CreateNewUniqueFileWithPrefix( 
std::u16string_view aP
             OUString aTryName = aPrefix;
             if ( nInd )
                 aTryName += OUString::number( nInd );
-            if ( aExt.toChar() != '.' )
+            if ( aExt.empty() || aExt[0] != '.' )
                 aTryName += ".";
             aTryName += aExt;
 
diff --git a/sfx2/source/doc/objcont.cxx b/sfx2/source/doc/objcont.cxx
index caf222c61d2d..77622105a215 100644
--- a/sfx2/source/doc/objcont.cxx
+++ b/sfx2/source/doc/objcont.cxx
@@ -569,7 +569,7 @@ bool SfxObjectShell::IsHelpDocument() const
     return (pFilter && pFilter->GetFilterName() == "writer_web_HTML_help");
 }
 
-void SfxObjectShell::ResetFromTemplate( const OUString& rTemplateName, const 
OUString& rFileName )
+void SfxObjectShell::ResetFromTemplate( const OUString& rTemplateName, 
std::u16string_view rFileName )
 {
     // only care about resetting this data for LibreOffice formats otherwise
     if ( !IsOwnStorageFormat( *GetMedium())  )
diff --git a/sfx2/source/inc/appopen.hxx b/sfx2/source/inc/appopen.hxx
index df9057bfa197..5e32a249047a 100644
--- a/sfx2/source/inc/appopen.hxx
+++ b/sfx2/source/inc/appopen.hxx
@@ -29,7 +29,7 @@ class SfxObjectShell;
 
 ErrCode CheckPasswd_Impl(SfxObjectShell* pDoc, SfxMedium* pFile);
 
-void SetTemplate_Impl(const OUString&, const OUString&, SfxObjectShell*);
+void SetTemplate_Impl(std::u16string_view, const OUString&, SfxObjectShell*);
 
 #endif
 
diff --git a/sot/source/base/exchange.cxx b/sot/source/base/exchange.cxx
index 582ca49c5598..9777c3117917 100644
--- a/sot/source/base/exchange.cxx
+++ b/sot/source/base/exchange.cxx
@@ -381,18 +381,18 @@ OUString SotExchange::GetFormatMimeType( 
SotClipboardFormatId nFormat )
 |*
 *************************************************************************/
 
-SotClipboardFormatId SotExchange::GetFormatIdFromMimeType( const OUString& 
rMimeType )
+SotClipboardFormatId SotExchange::GetFormatIdFromMimeType( std::u16string_view 
rMimeType )
 {
     const DataFlavorRepresentation *pFormatArray_Impl = FormatArray_Impl();
     for( SotClipboardFormatId i = SotClipboardFormatId::STRING; i <= 
SotClipboardFormatId::FILE_LIST;  ++i )
-        if( rMimeType.equals( pFormatArray_Impl[ static_cast<int>(i) 
].pMimeType ) )
+        if( rMimeType == pFormatArray_Impl[ static_cast<int>(i) ].pMimeType )
             return i;
 
     // BM: the chart format 105 ("StarChartDocument 5.0") was written
     // only into 5.1 chart documents - in 5.0 and 5.2 it was 42 ("StarChart 
5.0")
     // The registry only contains the entry for the 42 format id.
     for( SotClipboardFormatId i = SotClipboardFormatId::RTF; i <= 
SotClipboardFormatId::USER_END;  ++i )
-        if( rMimeType.equals( pFormatArray_Impl[ static_cast<int>(i) 
].pMimeType ) )
+        if( rMimeType == pFormatArray_Impl[ static_cast<int>(i) ].pMimeType )
             return ( (i == SotClipboardFormatId::STARCHARTDOCUMENT_50)
                      ? SotClipboardFormatId::STARCHART_50
                      : i );
diff --git a/svx/source/unodraw/unoshap2.cxx b/svx/source/unodraw/unoshap2.cxx
index 4bf65c5e364b..9e180684fbe5 100644
--- a/svx/source/unodraw/unoshap2.cxx
+++ b/svx/source/unodraw/unoshap2.cxx
@@ -613,11 +613,11 @@ const SvxShapeControlPropertyMapping[] =
 
 namespace
 {
-    bool lcl_convertPropertyName( const OUString& rApiName, OUString& 
rInternalName )
+    bool lcl_convertPropertyName( std::u16string_view rApiName, OUString& 
rInternalName )
     {
         for( const auto & rEntry : SvxShapeControlPropertyMapping )
         {
-            if( rApiName.reverseCompareTo( rEntry.msAPIName ) == 0 )
+            if( rApiName == rEntry.msAPIName )
             {
                 rInternalName = rEntry.msFormName;
             }
diff --git a/sw/inc/SwAppletImpl.hxx b/sw/inc/SwAppletImpl.hxx
index 24384fda4500..ea30a104ce69 100644
--- a/sw/inc/SwAppletImpl.hxx
+++ b/sw/inc/SwAppletImpl.hxx
@@ -45,7 +45,7 @@ class SwApplet_Impl
     OUString   m_sAlt;
 
 public:
-    static SwHtmlOptType GetOptionType( const OUString& rName, bool bApplet );
+    static SwHtmlOptType GetOptionType( std::u16string_view rName, bool 
bApplet );
     SwApplet_Impl( SfxItemPool& rPool );
     SwApplet_Impl( SfxItemSet aSet ): m_aItemSet (std::move(aSet)) {}
     ~SwApplet_Impl();
diff --git a/sw/source/filter/basflt/fltini.cxx 
b/sw/source/filter/basflt/fltini.cxx
index 429eda6611cd..d2250d18c572 100644
--- a/sw/source/filter/basflt/fltini.cxx
+++ b/sw/source/filter/basflt/fltini.cxx
@@ -490,14 +490,14 @@ const CharSetNameMap *GetCharSetNameMap()
 /*
  Get a rtl_TextEncoding from its name
  */
-rtl_TextEncoding CharSetFromName(const OUString& rChrSetStr)
+rtl_TextEncoding CharSetFromName(std::u16string_view rChrSetStr)
 {
     const CharSetNameMap *pStart = GetCharSetNameMap();
     rtl_TextEncoding nRet = pStart->eCode;
 
     for(const CharSetNameMap *pMap = pStart; pMap->pName; ++pMap)
     {
-        if(rChrSetStr.equalsIgnoreAsciiCaseAscii(pMap->pName))
+        if(o3tl::equalsIgnoreAsciiCase(rChrSetStr, pMap->pName))
         {
             nRet = pMap->eCode;
             break;
@@ -549,7 +549,7 @@ void SwAsciiOptions::ReadUserData( std::u16string_view rStr 
)
     sal_Int32 nToken = 0;
     std::u16string_view sToken = o3tl::getToken(rStr, 0, ',', nToken); // 1. 
Charset name
     if (!sToken.empty())
-        m_eCharSet = CharSetFromName(OUString(sToken));
+        m_eCharSet = CharSetFromName(sToken);
     if (nToken >= 0 && !(sToken = o3tl::getToken(rStr, 0, ',', 
nToken)).empty()) // 2. Line ending type
     {
         if (o3tl::equalsIgnoreAsciiCase(sToken, u"CRLF"))
diff --git a/sw/source/filter/html/SwAppletImpl.cxx 
b/sw/source/filter/html/SwAppletImpl.cxx
index 16766d9a3b8a..9c0d64bb7c01 100644
--- a/sw/source/filter/html/SwAppletImpl.cxx
+++ b/sw/source/filter/html/SwAppletImpl.cxx
@@ -26,6 +26,7 @@
 #include <comphelper/embeddedobjectcontainer.hxx>
 #include <comphelper/classids.hxx>
 #include <com/sun/star/uno/Any.hxx>
+#include <o3tl/string_view.hxx>
 #include <svtools/embedhlp.hxx>
 #include <tools/globname.hxx>
 #include <tools/urlobj.hxx>
@@ -33,75 +34,75 @@
 
 using namespace com::sun::star;
 
-SwHtmlOptType SwApplet_Impl::GetOptionType( const OUString& rName, bool 
bApplet )
+SwHtmlOptType SwApplet_Impl::GetOptionType( std::u16string_view rName, bool 
bApplet )
 {
     SwHtmlOptType nType = bApplet ? SwHtmlOptType::PARAM : SwHtmlOptType::TAG;
 
-    switch( rName.toChar() )
+    switch( rName[0] )
     {
     case 'A':
     case 'a':
-        if( rName.equalsIgnoreAsciiCase( OOO_STRING_SVTOOLS_HTML_O_align ) ||
-            rName.equalsIgnoreAsciiCase( OOO_STRING_SVTOOLS_HTML_O_alt ) )
+        if( o3tl::equalsIgnoreAsciiCase( rName, 
OOO_STRING_SVTOOLS_HTML_O_align ) ||
+            o3tl::equalsIgnoreAsciiCase( rName, OOO_STRING_SVTOOLS_HTML_O_alt 
) )
             nType = SwHtmlOptType::IGNORE;
         else if( bApplet &&
-                 (rName == "ARCHIVE" || rName == "ARCHIVES" ) )
+                 (rName == u"ARCHIVE" || rName == u"ARCHIVES" ) )
             nType = SwHtmlOptType::TAG;
         break;
     case 'C':
     case 'c':
-        if( rName.equalsIgnoreAsciiCase( OOO_STRING_SVTOOLS_HTML_O_class ) ||
-            (bApplet && (rName.equalsIgnoreAsciiCase( 
OOO_STRING_SVTOOLS_HTML_O_code ) ||
-                         rName.equalsIgnoreAsciiCase( 
OOO_STRING_SVTOOLS_HTML_O_codebase ))) )
+        if( o3tl::equalsIgnoreAsciiCase( rName, 
OOO_STRING_SVTOOLS_HTML_O_class ) ||
+            (bApplet && (o3tl::equalsIgnoreAsciiCase( rName, 
OOO_STRING_SVTOOLS_HTML_O_code ) ||
+                         o3tl::equalsIgnoreAsciiCase( rName, 
OOO_STRING_SVTOOLS_HTML_O_codebase ))) )
             nType = SwHtmlOptType::IGNORE;
         break;
     case 'H':
     case 'h':
-        if( rName.equalsIgnoreAsciiCase( OOO_STRING_SVTOOLS_HTML_O_height ) )
+        if( o3tl::equalsIgnoreAsciiCase( rName, 
OOO_STRING_SVTOOLS_HTML_O_height ) )
             nType = SwHtmlOptType::SIZE;
-        else if( rName.equalsIgnoreAsciiCase( OOO_STRING_SVTOOLS_HTML_O_hspace 
) ||
-            (!bApplet && rName.equalsIgnoreAsciiCase( 
OOO_STRING_SW_HTML_O_Hidden )) )
+        else if( o3tl::equalsIgnoreAsciiCase( rName, 
OOO_STRING_SVTOOLS_HTML_O_hspace ) ||
+            (!bApplet && o3tl::equalsIgnoreAsciiCase( rName, 
OOO_STRING_SW_HTML_O_Hidden )) )
             nType = SwHtmlOptType::IGNORE;
         break;
     case 'I':
     case 'i':
-        if( rName.equalsIgnoreAsciiCase( OOO_STRING_SVTOOLS_HTML_O_id ) )
+        if( o3tl::equalsIgnoreAsciiCase( rName, OOO_STRING_SVTOOLS_HTML_O_id ) 
)
             nType = SwHtmlOptType::IGNORE;
         break;
     case 'M':
     case 'm':
-        if( bApplet && rName.equalsIgnoreAsciiCase( 
OOO_STRING_SVTOOLS_HTML_O_mayscript ) )
+        if( bApplet && o3tl::equalsIgnoreAsciiCase( rName, 
OOO_STRING_SVTOOLS_HTML_O_mayscript ) )
             nType = SwHtmlOptType::IGNORE;
         break;
     case 'N':
     case 'n':
-        if( rName.equalsIgnoreAsciiCase( OOO_STRING_SVTOOLS_HTML_O_name ) )
+        if( o3tl::equalsIgnoreAsciiCase( rName, OOO_STRING_SVTOOLS_HTML_O_name 
) )
             nType = SwHtmlOptType::IGNORE;
         break;
     case 'O':
     case 'o':
-        if( bApplet && rName == "OBJECT" )
+        if( bApplet && rName == u"OBJECT" )
             nType = SwHtmlOptType::TAG;
         break;
     case 'S':
     case 's':
-        if( rName.equalsIgnoreAsciiCase( OOO_STRING_SVTOOLS_HTML_O_style ) ||
-            (!bApplet && rName.equalsIgnoreAsciiCase( 
OOO_STRING_SVTOOLS_HTML_O_src )) )
+        if( o3tl::equalsIgnoreAsciiCase( rName, 
OOO_STRING_SVTOOLS_HTML_O_style ) ||
+            (!bApplet && o3tl::equalsIgnoreAsciiCase( rName, 
OOO_STRING_SVTOOLS_HTML_O_src )) )
             nType = SwHtmlOptType::IGNORE;
         break;
     case 'T':
     case 't':
-        if( !bApplet && rName.equalsIgnoreAsciiCase( 
OOO_STRING_SVTOOLS_HTML_O_type ) )
+        if( !bApplet && o3tl::equalsIgnoreAsciiCase( rName, 
OOO_STRING_SVTOOLS_HTML_O_type ) )
             nType = SwHtmlOptType::IGNORE;
         break;
     case 'V':
     case 'v':
-        if( rName.equalsIgnoreAsciiCase( OOO_STRING_SVTOOLS_HTML_O_vspace ) )
+        if( o3tl::equalsIgnoreAsciiCase( rName, 
OOO_STRING_SVTOOLS_HTML_O_vspace ) )
             nType = SwHtmlOptType::IGNORE;
         break;
     case 'W':
     case 'w':
-        if( rName.equalsIgnoreAsciiCase( OOO_STRING_SVTOOLS_HTML_O_width ) )
+        if( o3tl::equalsIgnoreAsciiCase( rName, 
OOO_STRING_SVTOOLS_HTML_O_width ) )
             nType = SwHtmlOptType::SIZE;
         break;
     }
diff --git a/sw/source/filter/html/htmlfld.cxx 
b/sw/source/filter/html/htmlfld.cxx
index 744157f73cf3..c1eff7ef7cb7 100644
--- a/sw/source/filter/html/htmlfld.cxx
+++ b/sw/source/filter/html/htmlfld.cxx
@@ -20,6 +20,7 @@
 #include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
 #include <com/sun/star/document/XDocumentProperties.hpp>
 #include <com/sun/star/frame/XModel.hpp>
+#include <o3tl/string_view.hxx>
 #include <osl/diagnose.h>
 #include <docsh.hxx>
 #include <IDocumentFieldsAccess.hxx>
@@ -196,12 +197,12 @@ HTMLOptionEnum<SwFileNameFormat> const 
aHTMLFileNameFieldFormatTable[] =
     { nullptr,                          SwFileNameFormat(0) }
 };
 
-SvxNumType SwHTMLParser::GetNumType( const OUString& rStr, SvxNumType 
nDfltType )
+SvxNumType SwHTMLParser::GetNumType( std::u16string_view rStr, SvxNumType 
nDfltType )
 {
     const HTMLOptionEnum<SvxNumType> *pOptEnums = aHTMLPageNumFieldFormatTable;
     while( pOptEnums->pName )
     {
-        if( rStr.equalsIgnoreAsciiCaseAscii( pOptEnums->pName ) )
+        if( o3tl::equalsIgnoreAsciiCase( rStr, pOptEnums->pName ) )
             return pOptEnums->nValue;
         pOptEnums++;
     }
diff --git a/sw/source/filter/html/htmlplug.cxx 
b/sw/source/filter/html/htmlplug.cxx
index 9bb4b2743552..9b43f079d4fb 100644
--- a/sw/source/filter/html/htmlplug.cxx
+++ b/sw/source/filter/html/htmlplug.cxx
@@ -333,7 +333,7 @@ void SwHTMLParser::SetSpace( const Size& rPixSpace,
     }
 }
 
-OUString SwHTMLParser::StripQueryFromPath(const OUString& rBase, const 
OUString& rPath)
+OUString SwHTMLParser::StripQueryFromPath(std::u16string_view rBase, const 
OUString& rPath)
 {
     if (!comphelper::isFileUrl(rBase))
         return rPath;
diff --git a/sw/source/filter/html/svxcss1.cxx 
b/sw/source/filter/html/svxcss1.cxx
index 3155d62f2984..c50d7312b76f 100644
--- a/sw/source/filter/html/svxcss1.cxx
+++ b/sw/source/filter/html/svxcss1.cxx
@@ -56,6 +56,7 @@
 #include <vcl/svapp.hxx>
 #include <sal/log.hxx>
 #include <osl/diagnose.h>
+#include <o3tl/string_view.hxx>
 
 #include <hintids.hxx>
 
@@ -866,11 +867,11 @@ void SvxCSS1Parser::ParseStyleOption( const OUString& rIn,
 }
 
 bool SvxCSS1Parser::GetEnum( const CSS1PropertyEnum *pPropTable,
-                          const OUString &rValue, sal_uInt16& rEnum )
+                          std::u16string_view rValue, sal_uInt16& rEnum )
 {
     while( pPropTable->pName )
     {
-        if( !rValue.equalsIgnoreAsciiCaseAscii( pPropTable->pName ) )
+        if( !o3tl::equalsIgnoreAsciiCase( rValue, pPropTable->pName ) )
             pPropTable++;
         else
             break;
diff --git a/sw/source/filter/html/svxcss1.hxx 
b/sw/source/filter/html/svxcss1.hxx
index 30c5a7b4accb..985f98a079b7 100644
--- a/sw/source/filter/html/svxcss1.hxx
+++ b/sw/source/filter/html/svxcss1.hxx
@@ -258,7 +258,7 @@ public:
 
     // convert a string to enum value
     static bool GetEnum( const CSS1PropertyEnum *pPropTable,
-                         const OUString& rValue, sal_uInt16 &rEnum );
+                         std::u16string_view rValue, sal_uInt16 &rEnum );
 
     static void PixelToTwip( tools::Long &nWidth, tools::Long &nHeight );
 
diff --git a/sw/source/filter/html/swhtml.hxx b/sw/source/filter/html/swhtml.hxx
index 4f017327fe86..1c88e8add932 100644
--- a/sw/source/filter/html/swhtml.hxx
+++ b/sw/source/filter/html/swhtml.hxx
@@ -667,7 +667,7 @@ class SwHTMLParser : public SfxHTMLParser, public 
SvtListener
 
     // <SDFIELD>
 public:
-    static SvxNumType GetNumType( const OUString& rStr, SvxNumType eDfltType );
+    static SvxNumType GetNumType( std::u16string_view rStr, SvxNumType 
eDfltType );
 private:
     void NewField();
     void EndField();
@@ -953,7 +953,7 @@ public:
     void NotifyMacroEventRead();
 
     /// Strips query and fragment from a URL path if base URL is a file:// one.
-    static OUString StripQueryFromPath(const OUString& rBase, const OUString& 
rPath);
+    static OUString StripQueryFromPath(std::u16string_view rBase, const 
OUString& rPath);
 };
 
 struct SwPendingData
diff --git a/test/source/sheet/xspreadsheets2.cxx 
b/test/source/sheet/xspreadsheets2.cxx
index 780e806b4deb..3bd539710480 100644
--- a/test/source/sheet/xspreadsheets2.cxx
+++ b/test/source/sheet/xspreadsheets2.cxx
@@ -26,6 +26,7 @@
 
 #include <rtl/ustring.hxx>
 #include <cppunit/TestAssert.h>
+#include <o3tl/string_view.hxx>
 
 using namespace css;
 using namespace css::uno;
@@ -350,12 +351,14 @@ void XSpreadsheets2::importSheetToCopy()
     xDestSheet.set( xDestSheetIndexAccess->getByIndex(nDestPosEffective), 
UNO_QUERY_THROW);
 }
 
-bool XSpreadsheets2::isExternalReference(const OUString& aDestContent, 
std::u16string_view aSrcContent )
+bool XSpreadsheets2::isExternalReference(std::u16string_view aDestContent, 
std::u16string_view aSrcContent )
 {
-    CPPUNIT_ASSERT(aDestContent.startsWith("'file://"));
+    CPPUNIT_ASSERT(o3tl::starts_with(aDestContent, u"'file://"));
 
-    return  (aDestContent.endsWithIgnoreAsciiCase(aSrcContent) // same cell 
address
-            && aDestContent.indexOf(gaSrcFileName)>0); // contains source file 
name
+    if (!o3tl::endsWithIgnoreAsciiCase(aDestContent, aSrcContent)) // same 
cell address
+        return false;
+    size_t nPos = aDestContent.find(gaSrcFileName);
+    return nPos != std::u16string_view::npos && nPos > 0; // contains source 
file name
 }
 
 }
diff --git a/ucb/source/ucp/webdav-curl/ContentProperties.cxx 
b/ucb/source/ucp/webdav-curl/ContentProperties.cxx
index d78d138ab215..d76c03d7589d 100644
--- a/ucb/source/ucp/webdav-curl/ContentProperties.cxx
+++ b/ucb/source/ucp/webdav-curl/ContentProperties.cxx
@@ -25,6 +25,7 @@
 #include "DateTimeHelper.hxx"
 #include "webdavprovider.hxx"
 #include "ContentProperties.hxx"
+#include <o3tl/string_view.hxx>
 
 using namespace com::sun::star;
 using namespace http_dav_ucp;
@@ -490,8 +491,7 @@ void ContentProperties::addProperty( const OUString & rName,
 
 namespace
 {
-    bool isCachable( OUString const & rName,
-                     bool isCaseSensitive )
+    bool isCachable( std::u16string_view rName, bool isCaseSensitive )
     {
         const OUString aNonCachableProps [] =
         {
@@ -518,11 +518,11 @@ namespace
         {
             if ( isCaseSensitive )
             {
-                if ( rName.equals( aNonCachableProps[ n ] ) )
+                if ( rName == aNonCachableProps[ n ] )
                     return false;
             }
             else
-                if ( rName.equalsIgnoreAsciiCase( aNonCachableProps[ n ] ) )
+                if ( o3tl::equalsIgnoreAsciiCase( rName, aNonCachableProps[ n 
] ) )
                     return false;
         }
         return true;
diff --git a/xmloff/inc/prstylecond.hxx b/xmloff/inc/prstylecond.hxx
index e658a83b9125..ca4240bb5375 100644
--- a/xmloff/inc/prstylecond.hxx
+++ b/xmloff/inc/prstylecond.hxx
@@ -19,6 +19,6 @@
 
 #include <rtl/ustring.hxx>
 
-OUString GetParaStyleCondExternal(OUString const&);
+OUString GetParaStyleCondExternal(std::u16string_view);
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/xmloff/source/style/prstylecond.cxx 
b/xmloff/source/style/prstylecond.cxx
index 4da002488c36..a7ab66f8352d 100644
--- a/xmloff/source/style/prstylecond.cxx
+++ b/xmloff/source/style/prstylecond.cxx
@@ -68,11 +68,11 @@ const ConditionMap g_ConditionMap[] =
     { "NumberingLevel10",       XML_LIST_LEVEL,     10 }
 };
 
-OUString GetParaStyleCondExternal( OUString const &internal)
+OUString GetParaStyleCondExternal( std::u16string_view internal)
 {
     for (size_t i = 0; i < SAL_N_ELEMENTS(g_ConditionMap); ++i)
     {
-        if (internal.compareToAscii( g_ConditionMap[i].aInternal ) == 0)
+        if (o3tl::equalsAscii(internal, g_ConditionMap[i].aInternal ))
         {
             OUString aResult = GetXMLToken( g_ConditionMap[i].nExternal ) +
                     "()";
diff --git a/xmloff/source/transform/TransformerBase.cxx 
b/xmloff/source/transform/TransformerBase.cxx
index e15e81d85d14..288f013a9253 100644
--- a/xmloff/source/transform/TransformerBase.cxx
+++ b/xmloff/source/transform/TransformerBase.cxx
@@ -454,11 +454,11 @@ void SAL_CALL XMLTransformerBase::initialize( const 
Sequence< Any >& aArguments
     assert(m_xHandler.is()); // can't do anything without that
 }
 
-static sal_Int16 lcl_getUnit( const OUString& rValue )
+static sal_Int16 lcl_getUnit( std::u16string_view rValue )
 {
-    if( rValue.endsWithIgnoreAsciiCase( "cm" ) )
+    if( o3tl::endsWithIgnoreAsciiCase( rValue, "cm" ) )
         return util::MeasureUnit::CM;
-    else if ( rValue.endsWithIgnoreAsciiCase( "mm" ) )
+    else if ( o3tl::endsWithIgnoreAsciiCase( rValue, "mm" ) )
         return util::MeasureUnit::MM;
     else
         return util::MeasureUnit::INCH;

Reply via email to