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 に答える