2013-03-15 72 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;