0

我正在寻找一种方法来删除括号中的所有数字和字母,以及与字母无关的数字(即我想保留'v2''vol.2')。

例如:

"My Notes v02 003 (2009) (My sillyness)"

会成为:

"My Notes v02".

我找到了删除大括号中的数据和大括号本身的方法,但是我现在遇到的问题是删除与卷标识符无关的数字。

目前我有:

QString myItem = "My Notes v02 003 (2009) (My sillyness)";
myItem = myItem.remove( QRegExp( "\\[.*\\]|\\(.*\\)" ) );

我是否需要将字符串分解为单个单词并手动检查?还是有更好的解决方案?

4

1 回答 1

0

首先,我想建议您使用 boost 库轻松地操作您的字符串数据 http://www.boost.org/ 所以如果您的 QString myItem 始终是结构数据,那么每次使用拆分字符串很容易得到您想要的找空白

#include <boost/algorithm/string.hpp>
using namespace std;
using namespace boost;
/..
QString myItem = "My Notes v02 003 (2009) (My sillyness)";
vector< string > newItem;
split( newItem, myItem.tostdstring, is_any_of(" "));
cout <<newItem.at(0) <<" "<<newItem.at(1) <<" "<<newItem.at(2) <<endl;
于 2014-03-13T21:15:16.027 回答