Qt - 从QString中以大写字母提取第一个字母的单词

时间:2016-12-22 14:44:50

标签: qt qstring

我有一个名为QString的长text,我希望提取其中的所有单词,其首字母大写。有没有办法使用QString::split()方法分别测试每个单词?甚至是一种方法,无需拆分text

2 个答案:

答案 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,如果您愿意,尽管不鼓励使用它。)