QString Удалить числа, не связанные с буквами

Ищу способ убрать все цифры и буквы в скобках, а также цифры, не связанные с буквой (т.е. хочу оставить '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( "\\[.*\\]|\\(.*\\)" ) );

Нужно ли разбивать строки на отдельные слова и проверять вручную? Или есть лучшее решение?


person Eric    schedule 15.03.2013    source источник


Ответы (1)


сначала я хочу порекомендовать вам использовать библиотеку 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;
person MoadKey    schedule 13.03.2014