Russian Qt Forum

Qt => Общие вопросы => Тема начата: pastor от Декабрь 30, 2009, 17:24



Название: QString::split + QRegExp
Отправлено: pastor от Декабрь 30, 2009, 17:24
Имеется строка вида "UnitedStates". Неполучается составить регулярное выражение для резделения этих слов. Результатом должен быть список из двух слов: "United", "States".

Регулярное выражение вида:

Код
C++ (Qt)
QString name("UnitedStates");
name.split(QRegExp("[A-Z]"), QString::SkipEmptyParts);

дает

Цитировать
"nited", "tates"

У кого будут какие идеи?


Название: Re: QString::split + QRegExp
Отправлено: Пантер от Декабрь 30, 2009, 17:48
ИМХО, никак. :(


Название: Re: QString::split + QRegExp
Отправлено: Rcus от Декабрь 30, 2009, 18:00
А мне кажется можно через QRegExp::indexIn и выражение с negative lookahead assertion (?!E)


Название: Re: QString::split + QRegExp
Отправлено: BRE от Декабрь 30, 2009, 18:05
А мне кажется можно через QRegExp::indexIn и выражение с negative lookahead assertion (?!E)
+1
Если отказаться от split, который и убирает большие буквы считая их разделителями, то все должно получиться.


Название: Re: QString::split + QRegExp
Отправлено: pastor от Декабрь 30, 2009, 18:10
Спасибо за советы, буду пробовать.


Название: Re: QString::split + QRegExp
Отправлено: zenden от Декабрь 30, 2009, 20:22
Код
C++ (Qt)
name.split(QRegExp("(?=[A-Z])"), QString::SkipEmptyParts);


Название: Re: QString::split + QRegExp
Отправлено: pastor от Декабрь 31, 2009, 01:43
zenden, спасибо! Работает!