2013-03-15 71 views
0

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

例如:

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

将成为:

"My Notes v02". 

我已经找到办法来消除在括号中的数据和大括号,但是这个问题我现在已经被删除的号码不与卷标识符关联。

目前我有:

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

我需要向上突破字符串为单个单词和手动检查?还是有更好的解决方案?

回答

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;