我希望得到搜索的所有“指数”。显然“QStringList :: indexOf”一次返回一个索引......所以我必须做一个while循环。但它也“仅”完全匹配。
如果我想返回拥有“哈士奇”的所有物品的索引怎么办...那么也许是“狗”...然后“狗2”。 我坚持比“QString :: contains”然后循环,来完成这个?或者是否有更多与我缺失的“QStringList类”相关的方式
QStringList dogPound;
dogPound << "husky dog 1"
<< "husky dog 2"
<< "husky dog 2 spotted"
<< "lab dog 2 spotted";
答案 0 :(得分:2)
您可以使用QStringList::filter
方法。它返回一个新的QStringList
,其中包含从过滤器传递的所有项目。
QStringList dogPound;
dogPound << "husky dog 1"
<< "husky dog 2"
<< "husky dog 2 spotted"
<< "lab dog 2 spotted";
QStringList spotted = dogPound.filter("spotted");
// spotted now contains "husky dog 2 spotted" and "lab dog 2 spotted"
答案 1 :(得分:1)
这似乎是在QStringList中找到特定QString位置的最直接的方法:
#include <algorithm>
#include <QDebug>
#include <QString>
#include <QStringList>
int main(int argc, char *argv[])
{
QStringList words;
words.append("bar");
words.append("baz");
words.append("fnord");
QStringList search;
search.append("fnord");
search.append("bar");
search.append("baz");
search.append("bripiep");
foreach(const QString &word, search)
{
int i = -1;
QStringList::iterator it = std::find(words.begin(), words.end(), word);
if (it != words.end())
i = it - words.begin();
qDebug() << "index of" << word << "in" << words << "is" << i;
}
return 0;
}