2016-05-31 87 views
2

为QString在的QString的一部分,包含()方法的工作原理是这样的:搜索在QStringList中使用Qt

QString s = "long word"; 
s.contains("long"); // -> True 

我会假设,QStringList中工作方式类似,但它不会:

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

QStringList包含精确匹配的搜索,这不符合我的要求。有没有一种简单的方法来查找QStringList中的一部分字符串?我当然可以通过QStringList循环并使用contains(),但有没有更好的方法?

回答

2

可以使用功能QStringList::filter()

QStringList中QStringList中::过滤器(常量QString的&海峡, 的Qt :: CaseSensitivity CS =的Qt ::区分大小写)const的

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

并检查返回的列表是否为空。

你的情况:

QStringList s; 
s << "long word"; 
s << "longer word"; 
s.filter("long"); // returns "long word", and also "longer word" since "longer" contains "long" 
+0

其实它的返回都将QString因为“长”也是“不再是一个子:) – Bugfinger

+0

当然:)但它回答的问题是*有没有一种简单的方法来在QStringList中找到一个字符串的一部分?* – IAmInPLS

+0

是的,我没有提到你的解决方案,而只是为了你的评论'//返回'长字''。:)。 – Bugfinger