@@ -1342,6 +1342,28 @@ static QVariant fcnTrim( const QVariantList &values, const QgsExpressionContext
1342
1342
return QVariant ( str.trimmed () );
1343
1343
}
1344
1344
1345
+ static QVariant fcnLTrim ( const QVariantList &values, const QgsExpressionContext *, QgsExpression *parent, const QgsExpressionNodeFunction * )
1346
+ {
1347
+ QString str = QgsExpressionUtils::getStringValue ( values.at ( 0 ), parent );
1348
+
1349
+ const QString characters = QgsExpressionUtils::getStringValue ( values.at ( 1 ), parent );
1350
+
1351
+ const QRegularExpression re ( QStringLiteral ( " ^([%1]*)" ).arg ( QRegularExpression::escape ( characters ) ) );
1352
+ str.replace ( re, QString () );
1353
+ return QVariant ( str );
1354
+ }
1355
+
1356
+ static QVariant fcnRTrim ( const QVariantList &values, const QgsExpressionContext *, QgsExpression *parent, const QgsExpressionNodeFunction * )
1357
+ {
1358
+ QString str = QgsExpressionUtils::getStringValue ( values.at ( 0 ), parent );
1359
+
1360
+ const QString characters = QgsExpressionUtils::getStringValue ( values.at ( 1 ), parent );
1361
+
1362
+ const QRegularExpression re ( QStringLiteral ( " ([%1]*)$" ).arg ( QRegularExpression::escape ( characters ) ) );
1363
+ str.replace ( re, QString () );
1364
+ return QVariant ( str );
1365
+ }
1366
+
1345
1367
static QVariant fcnLevenshtein ( const QVariantList &values, const QgsExpressionContext *, QgsExpression *parent, const QgsExpressionNodeFunction * )
1346
1368
{
1347
1369
QString string1 = QgsExpressionUtils::getStringValue ( values.at ( 0 ), parent );
@@ -8159,6 +8181,12 @@ const QList<QgsExpressionFunction *> &QgsExpression::Functions()
8159
8181
<< new QgsStaticExpressionFunction ( QStringLiteral ( " upper" ), QgsExpressionFunction::ParameterList () << QgsExpressionFunction::Parameter ( QStringLiteral ( " string" ) ), fcnUpper, QStringLiteral ( " String" ) )
8160
8182
<< new QgsStaticExpressionFunction ( QStringLiteral ( " title" ), QgsExpressionFunction::ParameterList () << QgsExpressionFunction::Parameter ( QStringLiteral ( " string" ) ), fcnTitle, QStringLiteral ( " String" ) )
8161
8183
<< new QgsStaticExpressionFunction ( QStringLiteral ( " trim" ), QgsExpressionFunction::ParameterList () << QgsExpressionFunction::Parameter ( QStringLiteral ( " string" ) ), fcnTrim, QStringLiteral ( " String" ) )
8184
+ << new QgsStaticExpressionFunction ( QStringLiteral ( " ltrim" ), QgsExpressionFunction::ParameterList ()
8185
+ << QgsExpressionFunction::Parameter ( QStringLiteral ( " string" ) )
8186
+ << QgsExpressionFunction::Parameter ( QStringLiteral ( " characters" ), true , QStringLiteral ( " " ) ), fcnLTrim, QStringLiteral ( " String" ) )
8187
+ << new QgsStaticExpressionFunction ( QStringLiteral ( " rtrim" ), QgsExpressionFunction::ParameterList ()
8188
+ << QgsExpressionFunction::Parameter ( QStringLiteral ( " string" ) )
8189
+ << QgsExpressionFunction::Parameter ( QStringLiteral ( " characters" ), true , QStringLiteral ( " " ) ), fcnRTrim, QStringLiteral ( " String" ) )
8162
8190
<< new QgsStaticExpressionFunction ( QStringLiteral ( " levenshtein" ), QgsExpressionFunction::ParameterList () << QgsExpressionFunction::Parameter ( QStringLiteral ( " string1" ) ) << QgsExpressionFunction::Parameter ( QStringLiteral ( " string2" ) ), fcnLevenshtein, QStringLiteral ( " Fuzzy Matching" ) )
8163
8191
<< new QgsStaticExpressionFunction ( QStringLiteral ( " longest_common_substring" ), QgsExpressionFunction::ParameterList () << QgsExpressionFunction::Parameter ( QStringLiteral ( " string1" ) ) << QgsExpressionFunction::Parameter ( QStringLiteral ( " string2" ) ), fcnLCS, QStringLiteral ( " Fuzzy Matching" ) )
8164
8192
<< new QgsStaticExpressionFunction ( QStringLiteral ( " hamming_distance" ), QgsExpressionFunction::ParameterList () << QgsExpressionFunction::Parameter ( QStringLiteral ( " string1" ) ) << QgsExpressionFunction::Parameter ( QStringLiteral ( " string2" ) ), fcnHamming, QStringLiteral ( " Fuzzy Matching" ) )
0 commit comments