Russian Qt Forum

Qt => Общие вопросы => Тема начата: smartchecker от Декабрь 03, 2009, 01:54



Название: Как определить русское слово?
Отправлено: smartchecker от Декабрь 03, 2009, 01:54
Есть ли какой-нибудь способ кроме перебора всех букв в слове и проверки на вхождение в диапазон русских букв или
сравнения по словарю  для определения русских слов?


Название: Re: Как определить русское слово?
Отправлено: panAlexey от Декабрь 03, 2009, 07:38
Используй регексп. Нечто вроде: ([А-Яа-яЁё]+).


Название: Re: Как определить русское слово?
Отправлено: smartchecker от Декабрь 03, 2009, 11:02
Используй регексп. Нечто вроде: ([А-Яа-яЁё]+).
А пример можно?


Название: Re: Как определить русское слово?
Отправлено: SASA от Декабрь 03, 2009, 12:53
QRegExp::exactMatch ( const QString & str )


Название: Re: Как определить русское слово?
Отправлено: smartchecker от Декабрь 03, 2009, 18:20
QRegExp::exactMatch ( const QString & str )
Имелось ввиду не какое-то конкретное слово, а слова, в который только русские буквы.


Название: Re: Как определить русское слово?
Отправлено: Авварон от Декабрь 03, 2009, 18:30
совмести пост 2 и 4


Название: Re: Как определить русское слово?
Отправлено: smartchecker от Декабрь 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));
            }
Что не так?


Название: Re: Как определить русское слово?
Отправлено: Авварон от Декабрь 03, 2009, 19:40
как минимум нет скобочек в регекспре


Название: Re: Как определить русское слово?
Отправлено: MoPDoBoPoT от Декабрь 03, 2009, 20:50
Когда спрашивают что не так, как правило, еще выкладывают лог  :)
Функция exactMatch не статическая, поэтому надо создавать объект класса QRegExp и задействовать его.
Обычно пишут так QRegExp::exactMatch, чтобы показать какой метод какого класса надо задействовать. Все-таки иногда надо посматривать в доку.  :)


Название: Re: Как определить русское слово?
Отправлено: smartchecker от Декабрь 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
            }
         }