如何在qt6中使用replaceFirst和replaceLast
在qt6中replace默认是replaceAll的,没有replaceFirst和replaceLast,但是可以运用QString提供的以下两个方法现实
qsizetype QString::indexOf(const QString &str, qsizetype from = 0,
Qt::CaseSensitivity cs = Qt::CaseSensitive) const
QString &QString::replace(qsizetype position, qsizetype n, const QString &after)
indexOf方法说明
返回此字符串中第一个字符串str的索引位置,从中的索引位置向前搜索。如果找不到str,则返回-1。
如果cs是Qt::CaseSensitive(默认值),则搜索区分大小写;否则,搜索不区分大小写。
不区分大小写用Qt::CaseInsensitive
。
from默认值为0,从左往右搜索,如果from为-1,则搜索从最后一个字符开始;如果是-2,则在倒数第二个字符处,依此类推。
QString x = "sticky question";
QString y = "sti";
x.indexOf(y); // returns 0
x.indexOf(y, 1); // returns 10
x.indexOf(y, 10); // returns 10
x.indexOf(y, 11); // returns -1
replace方法说明
将从索引位置开始的n个字符替换为后面的字符串,并返回对此字符串的引用。
注意:如果指定的位置索引在字符串内,但位置+n超出字符串范围,则n将被调整为停止在字符串的末尾。
例如,从第4个位置开始替换3个字符文章来源:https://www.toymoban.com/news/detail-693948.html
QString x = "Say yes!";
QString y = "no";
qDebug() << x.replace(4, 2, y);
x = "Say yes!";
y = "no";
qDebug() << x.replace(4, 3, y);
x = "Say yes!";
y = "no";
qDebug() << x.replace(4, 4, y);
x = "Say yes!";
y = "no";
qDebug() << x.replace(4, 5, y);
输出文章来源地址https://www.toymoban.com/news/detail-693948.html
"Say nos!"
"Say no!"
"Say no"
"Say no"
replaceFirst和replaceLast具体实现
QString replaceFirst(QString &str,const QString &before,const QString &after,
Qt::CaseSensitivity cs= Qt::CaseSensitive){
return str.replace(str.indexOf(before,cs),before.length(),after);
}
QString replaceLast(QString &str,const QString &before,const QString &after,
Qt::CaseSensitivity cs= Qt::CaseSensitive){
return str.replace(str.lastIndexOf(before,cs),before.length(),after);
}
测试代码
#include <QApplication>
#include <QString>
#include <QRegularExpression>
#include <QDebug>
QString replaceFirst(QString &str,const QString &before,const QString &after,
Qt::CaseSensitivity cs= Qt::CaseSensitive){
return str.replace(str.indexOf(before,cs),before.length(),after);
}
QString replaceLast(QString &str,const QString &before,const QString &after,
Qt::CaseSensitivity cs= Qt::CaseSensitive){
return str.replace(str.lastIndexOf(before,cs),before.length(),after);
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QString ss = "aabbccbbccbb";
qDebug() << replaceFirst(ss,"bb","");
ss = "aabbccBbccbB";
qDebug() << replaceLast(ss,"bB","");
return a.exec();
}
输出结果
"aaccbbccbb"
"aabbccBbcc"
到了这里,关于如何在qt6中使用replaceFirst和replaceLast的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!