Parse y quitar parte de un QString
Pregunta
Quiero analizar algún tipo (o pura) código XML de un QString.
Mi QString es como:
<a>cat</a>My cat is very nice.
Deseo obtener 2 cadenas:
cat y Mi gato es muy agradable.
Creo que un analizador XML no es tal vez necesario, pero en el futuro voy a tener más etiquetas en la misma cadena, así que es también un punto muy interesante.
Solución
En Qt tiene la href="http://doc.trolltech.com/4.6/qregexp.html#details" rel="noreferrer"> acuerdo con el ejemplo Documentación: La lista QStringList contendrá el QRegExp
clase
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."
}
cat
y My cat is very nice.
Otros consejos
Se puede usar un <a>(.*)</a>(.*)
expresión regular.
Si utiliza Boost
que podría ponerlo en práctica como sigue:
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 );
}