在Qt中,在QStringList中搜索一个QString的部分

6
在QString中,contains()方法的工作方式如下:
QString s = "long word";
s.contains("long"); // -> True

我认为QStringList的工作方式类似,但实际并非如此:

QStringList s;
s << "long word";
s << "longer word";
s.contains("long"); // -> False

QStringList contains函数用于查找完全匹配的字符串,但这并不符合我的需求。有没有一种简单的方法可以在QStringList中查找字符串的一部分呢?当然我可以通过循环遍历QStringList并使用contains()函数,但是否有更好的方法呢?

1个回答

7
您可以使用函数 QStringList::filter()

QStringList QStringList::filter(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

返回包含子串 str 的所有字符串的列表。

请确保返回的列表不为空。
在您的情况下:
QStringList s;
s << "long word";
s << "longer word";
s.filter("long"); // returns "long word", and also "longer word" since "longer" contains "long"

实际上它返回了两个QString,因为"long"也是"longer"的子字符串。 :) - user6214440
当然可以 :) 但它回答了这个问题在QStringList中是否有一种简单的方法来查找字符串的一部分? - IAmInPLS
是的,我并没有指的是您的解决方案,而只是指您的注释 '// 返回 "长单词"'. :)。 - user6214440

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接