Russian Qt Forum
Ноябрь 26, 2024, 14:32 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как определить русское слово?  (Прочитано 6424 раз)
smartchecker
Гость
« : Декабрь 03, 2009, 01:54 »

Есть ли какой-нибудь способ кроме перебора всех букв в слове и проверки на вхождение в диапазон русских букв или
сравнения по словарю  для определения русских слов?
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #1 : Декабрь 03, 2009, 07:38 »

Используй регексп. Нечто вроде: ([А-Яа-яЁё]+).
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
smartchecker
Гость
« Ответ #2 : Декабрь 03, 2009, 11:02 »

Используй регексп. Нечто вроде: ([А-Яа-яЁё]+).
А пример можно?
Записан
SASA
Гость
« Ответ #3 : Декабрь 03, 2009, 12:53 »

QRegExp::exactMatch ( const QString & str )
Записан
smartchecker
Гость
« Ответ #4 : Декабрь 03, 2009, 18:20 »

QRegExp::exactMatch ( const QString & str )
Имелось ввиду не какое-то конкретное слово, а слова, в который только русские буквы.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #5 : Декабрь 03, 2009, 18:30 »

совмести пост 2 и 4
Записан
smartchecker
Гость
« Ответ #6 : Декабрь 03, 2009, 18:39 »

Код:
        srcList = srcLine.split(QRegExp("\\s+"));
        lastWord = srcList.last();
        lastWord.chop(1);

        for (int idx = 0; idx < srcList.indexOf(srcList.last()); idx++) {
            currentWord = srcList.at(idx);
            if ( currentWord.contains( QRegExp::exactMatch("[А-Яа-яЁё]+") ) {
                QMessageBox::warning(this, tr("app"), tr("word number %1 = %2").arg(idx).arg(currentWord));
            }
Что не так?
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #7 : Декабрь 03, 2009, 19:40 »

как минимум нет скобочек в регекспре
Записан
MoPDoBoPoT
Гость
« Ответ #8 : Декабрь 03, 2009, 20:50 »

Когда спрашивают что не так, как правило, еще выкладывают лог  Улыбающийся
Функция exactMatch не статическая, поэтому надо создавать объект класса QRegExp и задействовать его.
Обычно пишут так QRegExp::exactMatch, чтобы показать какой метод какого класса надо задействовать. Все-таки иногда надо посматривать в доку.  Улыбающийся
Записан
smartchecker
Гость
« Ответ #9 : Декабрь 04, 2009, 00:08 »

Всё, разобрался.

Код:
        QString srcLine;
        QStringList srcList;
        QString currentWord;

        srcList = srcLine.split(QRegExp("\\s+"));

        QRegExp rx(tr("[А-Яа-яЁё]+"));

        for (int idx = 0; idx < srcList.indexOf(srcList.last()); idx++) {
            currentWord = srcList.at(idx);
            if ( rx.exactMatch(currentWord) == true) {
                 // do something
            }
         }

Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.094 секунд. Запросов: 22.