Parse und entfernen Teil eines QString
Frage
Ich möchte von einem QString eine Art (oder rein) XML-Code analysieren.
Mein QString ist wie:
<a>cat</a>My cat is very nice.
Ich möchte 2 Strings erhalten:
Katze und Meine Katze ist sehr schön.
Ich denke, ein XML-Parser nicht vielleicht notwendig, aber in Zukunft werde ich mehr Tags in der gleichen Zeichenfolge hat, so ist es auch ein sehr interessanter Punkt.
Lösung
In Qt haben Sie die QRegExp
Klasse, die Sie helfen können, analysieren QString.
Nach Dokumentation Beispiel:
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."
}
Die QStringList Liste enthält die cat
und My cat is very nice.
Andere Tipps
Sie können einen regulären Ausdruck <a>(.*)</a>(.*)
verwenden.
Wenn Sie Boost
verwenden Sie könnte es implementieren wie folgt:
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 );
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow