我有一个很长的QString
,名为text
,我正在寻找提取其中第一个字母为大写的所有单词。有什么方法可以使用QString::split()
方法分别测试每个单词吗?或甚至一种方法来做到这一点,而不必分裂text
?Qt - 从QString中提取第一个字母大写的单词
2
A
回答
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
,如果你愿意,尽管它不鼓励使用)。
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();
}
+0
'QRegExp'已过时,只是为了向后兼容而成为Qt的一部分。它不应该用于新代码中... – Resurrection
相关问题
- 1. Swift大写字母中每个单词的第一个字母
- 2. 大写每个大写单词的第一个字母
- 3. 如何使一个单词的第一个字母大写?
- 4. 提取单词的第一个字符以创建首字母缩写词
- 5. 大写字母的第一个单词(或者可选的所有单词)的大写字母2+
- 6. 提取句子中每个单词的第一个字母
- 7. MYSQL - 大写每个句子中第一个单词的第一个字母
- 8. SQL - 大写每个单词的第一个字母
- 9. 大写每个单词的第一个字母斯卡拉
- 10. 大写每个单词的第一个字母
- 11. 使用SED的大写第一个字母的单词
- 12. 大写字母的第一个字母
- 13. 将某个单词的第一个字母更改为大写字母
- 14. 将每个单词的第一个字母转换为大写字母JS
- 15. 正则表达式第一个单词的大写字母
- 16. 使用preg_replace大写第一个字母的单词
- 17. 无法大写单词的第一个字母
- 18. 大写字母中的三个字母单词的第一个和最后一个字母
- 19. 字符类大写字符串中每个单词的第一个字母
- 20. 将两个单词中的第一个字母大写为两个字符串
- 21. 第一个字母大写
- 22. preg_match检查字符串中每个单词的第一个字母的大写
- 23. 仅交换第一个单词时首字母大写
- 24. 检查单词是否大写,只更改第一个字母
- 25. 删除单词如果第一个字母是大写
- 26. 检查单词的第一个字母是否是大写字母
- 27. 如何在vim中找到一个单词的第一个大写字母? e。
- 28. Java - 取第一个字母的单词并用另一个单词的第一个字母替换
- 29. 大写PHP中的第一个单词
- 30. 将每个单词的第一个字母大写,而不更改当前大写字母
正则表达式。在Qt中,您可以使用QRegularExpression类。为了创建你的表情,我建议使用https://regex101.com/在线regexp编辑器。 – Resurrection