crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> QString и QRegExp
Rosster
  опции профиля:
сообщение 1.9.2011, 9:42
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 33
Регистрация: 23.11.2009
Пользователь №: 1254

Спасибо сказали: 0 раз(а)




Репутация:   0  


Следующая проблема:
Есть QString str = "1234567890123 01.02.03г. По Красногвардейскому р-ну г.Санкт-Петербург";
мне нужно выдрать 3 группы слов:
1)1234567890123 - оно может иметь <=13 цифр
2)01.02.03 - год может иметь и 4 цифры
3)остальная часть после даты.
Пытаюсь реализовать это с помощью QRegExp и QString::split() и QString::section(). Никак не могу отловить правильную комбинацию.
Странно что в QString есть contains(), но нету выборки из текста заданных QRegExp выражением.
Буду благодарен за содействие в решении проблемы)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
RazrFalcon
  опции профиля:
сообщение 1.9.2011, 12:10
Сообщение #2


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Худший, наверное, способ:
  //QString str = "1234567890123 01.02.03г. По Красногвардейскому р-ну г.Санкт-Петербург";
  QString str = "По Красногвардейскому р-ну г.Санкт-Петербург 1234567890123 01.02.03г.";
  //QString str = "01.02.03г. По Красногвардейскому р-ну г.Санкт-Петербург 1234567890123";

  QRegExp numReg("[0-9]{3,13}");
  QRegExp yearReg("[0-9][0-9]\\.[0-9][0-9]\\.[0-9][0-9].\\.");

  //qDebug()<<str.remove(numReg);

  QString address = str;
  address.remove(numReg);
  address.remove(yearReg);
  qDebug()<<address.remove(QRegExp("^[ ]*|[ ]$")); //удаляем лишние пробелы

  QString year = str;
  year.remove(address);
  year.remove(numReg);
  year.remove(QRegExp("[ ]*")); //удаляем лишние пробелы
  qDebug()<<year;

  QString nums = str;
  nums.remove(address);
  nums.remove(year);
  nums.remove(QRegExp("[ ]*")); //удаляем лишние пробелы
  qDebug()<<nums;

Вывод:
"По Красногвардейскому р-ну г.Санкт-Петербург" 
"01.02.03г."
"1234567890123"


UPD: поправил выражения.

Сообщение отредактировал RazrFalcon - 1.9.2011, 12:22
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 23.4.2024, 14:41