Я работаю над Qt используя строку.Как я могу получить строку из 2 символов '#' и ':'
мои строки ниже:
#id:131615165 #1:aaa,s1 #23:dd #526:FE
результат, который я хочу получить: "id", "1 "," 23 "," 526 ".
Большое спасибо за любую помощь.
QRegularExpression
QRegularExpression regex("^#(.+?):"); qDebug() << regex.match("#id:131615165").captured(1);
^
#
(.+?)
.
+
?
:
QString решение на основе:
QString
QString s(" #iddfg:131615165"); int startPos = s.indexOf('#') + 1; int endPos = s.indexOf(':'); int length = endPos - startPos; qDebug() << startPos << length << s.mid(startPos, length);
Я настоятельно рекомендую онлайн-тестирование регулярных выражений, чтобы начать с регулярного выражения, например: https://regex101.com
Используя следующий код, вы можете получить данные из строки QString:
QString input = "#id:131615165"; QRegExp test("#(.*):"); if(test.exactMatch(input)) { qDebug() << "result:" << test.cap(1); }
Как @Someprogrammerdude написал в комментариях:
QString getTag(QString const &input) { QString result; int idx = input.indexOf(':'); if(input.startsWith('#') && idx > 1) { int len = idx - 1; result = input.mid(1, len); // [0]='#', [idx]=':' } return result; }