解析并取下QString的一部分
题
我想从QString解析某种(或纯)XML代码。
我的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