Parse et enlever une partie d'un QString
Question
Je veux analyser une sorte (ou pur) code XML à partir d'un QString.
Mon QString est comme:
<a>cat</a>My cat is very nice.
Je veux obtenir 2 chaînes:
chat et Mon chat est très agréable.
Je pense que un analyseur XML est peut-être pas nécessaire, mais à l'avenir je vais avoir plus de balises dans la même chaîne de sorte qu'il est aussi un point très intéressant.
La solution
Dans Qt, vous avez la classe QRegExp
qui peut vous aider à analyser votre QString.
Selon l'exemple de Documentation:
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."
}
La liste des QStringList contiendra le cat
et My cat is very nice.
Autres conseils
Vous pouvez utiliser un <a>(.*)</a>(.*)
d'expression régulière.
Si vous utilisez Boost
vous pouvez le mettre en œuvre comme suit:
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 );
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow