我有一个名为QString
的长text
,我希望提取其中的所有单词,其首字母大写。有没有办法使用QString::split()
方法分别测试每个单词?甚至是一种方法,无需拆分text
?
答案 0 :(得分:0)
不分裂:
QRegExp rx("\\b[A-Z]\\w+\\b"); // Or "\\b[A-Z]\\w*\\b" if you want to include one-character words
int pos = 0;
while ((pos = rx.indexIn(text, pos)) != -1)
{
QString your_word = rx.cap(); // every word is here
pos += rx.matchedLength();
}
答案 1 :(得分:0)
怎么样:
QString text = "Text is long. Or maybe longer. Yay!";
QRegularExpression regexp("[A-Z][^A-Z]*");
QRegularExpressionMatchIterator match = regexp.globalMatch(text);
QVector<QString> vec;
while(match.hasNext())
vec.append(match.next().capturedTexts());
正则表达式匹配从大写字母前移到下一个大写字母的所有内容。然后,因为您希望所有匹配项都迭代它们并将它们保存到QVector<QString>
(或QStringList
,如果您愿意,尽管不鼓励使用它。)