bool filter(const QString &text, const QString &keyword)
{
//如果关键字用空格隔开则代表是列表
if(keyword.contains(" "))
{
return Gt::filter(text,keyword.split(" ",QString::SkipEmptyParts));
}
//关键字为空全通过
if(keyword.trimmed().isEmpty())
return true;
//获取关键字列表祛除重复部分
QStringList keyList=keyword.trimmed().split("*");
/开始和结束
QString startKey,endKey;
if(keyList.count()>=2)
{
startKey=keyList.takeFirst();
endKey=keyList.takeLast();
}
//检查开始和结束
if(text.startsWith(startKey)==false || text.endsWith(endKey)==false)
{
return false;
}
bool pass=true;
int location=0;
foreach(QString key,keyList)
{
// -1 or lastLocation
location=text.indexOf(key,location,Qt::CaseInsensitive);
if(location <0)
{
pass=false;
break;
}
location+=key.length();
}
return pass;
}
文本过滤(支持通配符)
最新推荐文章于 2022-09-17 16:17:51 发布