Разбор и удалить часть QString
Вопрос
Я хочу разобрать какой-то код (или чистый) код XML из QString.
Мой QString как:
<a>cat</a>My cat is very nice.
Я хочу получить 2 строки:
Кот, а также Моя кошка очень хорошая.
Я думаю, что анализатор XML не должен, возможно, необходимо, но в будущем у меня будет больше тегов в той же строке, поэтому это также очень интересный момент.
Решение
В Qt у вас есть QRegExp
Класс, который может помочь вам разобрать свой QString.
Согласно примеру документации:
QRegExp rxlen("^<a>(.*)</a>(.*)$");
int pos = rxlen.indexIn("<a>cat</a>My cat is very nice.");
QStringList list
if (pos > -1) {
list << = rxlen.cap(1); // "cat"
list << = rxlen.cap(2); // "My cat is very nice."
}
Список QstringList будет содержать cat
а также My cat is very nice.
Другие советы
Вы можете использовать регулярное выражение <a>(.*)</a>(.*)
.
Если вы используете Boost
Вы можете реализовать это как следует следующим образом:
boost::regex exrp( "^<a>(.*)</a>(.*)$" );
boost::match_results<string::const_iterator> what;
if( regex_search( input_string, what, exrp ) ) {
std::string tag( what[1].first, what[1].second );
std::string value( what[2].first, what[2].second );
}
Не связан с StackOverflow