ResInsight/ApplicationLibCode/Application/Tools/RiaTextStringTools.cpp

99 lines
3.1 KiB
C++
Raw Normal View History

/////////////////////////////////////////////////////////////////////////////////
//
2019-01-09 08:15:34 -06:00
// Copyright (C) 2018- Equinor ASA
//
// ResInsight is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.
//
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
#include "RiaTextStringTools.h"
#include <QRegularExpression>
#include <QString>
#include <QStringList>
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RiaTextStringTools::compare( const QString& expected, const QString& actual )
{
// Suggestions for improvement
// 1. report line number for first change
// 2. report line numbers for all changes
// 3. add support for compare with content of a text file on disk
if ( expected.compare( actual ) == 0 )
{
return true;
}
return false;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RiaTextStringTools::trimAndRemoveDoubleSpaces( const QString& s )
{
int length;
QString trimmed = s.trimmed();
do
{
length = trimmed.size();
trimmed = trimmed.replace( " ", " " );
} while ( trimmed.size() < length );
return trimmed;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2020-10-09 01:38:18 -05:00
QString RiaTextStringTools::commonRoot( const QStringList& stringList )
{
2020-10-14 11:55:17 -05:00
QString root;
if ( !stringList.isEmpty() )
{
2020-10-14 11:55:17 -05:00
root = stringList.front();
for ( const auto& item : stringList )
{
2020-10-14 11:55:17 -05:00
if ( root.length() > item.length() )
{
root.truncate( item.length() );
}
2020-10-14 11:55:17 -05:00
for ( int i = 0; i < root.length(); ++i )
{
2020-10-14 11:55:17 -05:00
if ( root[i] != item[i] )
{
root.truncate( i );
break;
}
}
}
}
return root;
}
2020-10-09 01:38:18 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RiaTextStringTools::trimNonAlphaNumericCharacters( const QString& s )
{
QString trimmedString = s;
QRegularExpression trimRe( "[^a-zA-Z0-9]+$" );
trimmedString.replace( trimRe, "" );
return trimmedString;
}