Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Zeka13 от Март 22, 2012, 12:06



Название: QRegExp проверка расширения[РЕШЕНО]
Отправлено: Zeka13 от Март 22, 2012, 12:06
Доброго времени суток, снова нуждаюсь в помощи форума

В *nix системах папки могут называться начиная с ., да и вообще . может быть в любом месте названия папки

Хочу через QRegExp проверить, есть ли у файла расширение plot(проверяю строку разумеется), сам только вот что придумал
Код
C++ (Qt)
QRegExp rx("[^/]\\.plot");
 

Примеры

"/home/zeka/ggg.plot/kk"  Должно быть:нет совпадения / С моим регепсом: есть совпадение
"/home/zeka/.plot/kk"  Должно быть:нет совпадения / С моим регепсом: нет совпадения
"/home/zeka/plot/kk.plot"  Должно быть:есть совпадение / С моим регепсом: есть совпадение

Возможно вообще что-то придумать?
Заранее спасибо


Название: Re: QRegExp проверка расширения
Отправлено: Alex Custov от Март 22, 2012, 12:09
Через QFileInfo бери только имя файла, и его уже прогоняй через regexp.


Название: Re: QRegExp проверка расширения
Отправлено: mutineer от Март 22, 2012, 12:10
QRegExp rx("[^/]\\.plot$");

попробуй так


Название: Re: QRegExp проверка расширения
Отправлено: V1KT0P от Март 22, 2012, 12:12
Доброго времени суток, снова нуждаюсь в помощи форума

В *nix системах папки могут называться начиная с ., да и вообще . может быть в любом месте названия папки

Хочу через QRegExp проверить, есть ли у файла расширение plot(проверяю строку разумеется), сам только вот что придумал
Код
C++ (Qt)
QRegExp rx("[^/]\\.plot");
 

Примеры

"/home/zeka/ggg.plot/kk"  Должно быть:нет совпадения / С моим регепсом: есть совпадение
"/home/zeka/.plot/kk"  Должно быть:нет совпадения / С моим регепсом: нет совпадения
"/home/zeka/plot/kk.plot"  Должно быть:есть совпадение / С моим регепсом: есть совпадение

Возможно вообще что-то придумать?
Заранее спасибо
Два способа:
Код:
QRegExp rx("*.plot", Qt::CaseInsensitive, QRegExp::Wildcard);
Либо:
Код:
QString::endsWith(".plot", Qt::CaseInsensitive);


Название: Re: QRegExp проверка расширения
Отправлено: kambala от Март 22, 2012, 12:56
а что плохого в QFileInfo(fileName).suffix() == "plot" ?


Название: Re: QRegExp проверка расширения
Отправлено: Zeka13 от Март 22, 2012, 13:41
спасибо всем, кто ответил, первое же решение подошло
Код
C++ (Qt)
QRegExp rx("[^/]\\.plot$");
правда можно тогда упростить до QRegExp rx("\\.plot$");

Очень стыдно, что пропустил этот шаблонный символ в Шлее! Так что извиняюсь!

QFileInfo мне не подходит, так как я файл сохраняю, ну не существует его на момент проверки, не достаточно точно описал задачу, опять таки извиняюсь

ещё раз спасибо


Название: Re: QRegExp проверка расширения[РЕШЕНО]
Отправлено: Igors от Март 22, 2012, 14:22
1) Перестаньте извиняться по всякому поводу, вежливость тоже должна быть в меру

2) Блокировка темы - конечно Ваше личное дело, но впечатление производит неприятное, типа "нажрался и отвалил"

3) Чем меньше Вы будете забивать себе голову шлеями и жасминами - тем лучше. Это не программирование а так, "красивая обертка". Возможно принятое решение будет работать и делать все что нужно, но оно плохо потому что неадекватно, не соответствует задаче. Вам надо без затей проверить суффикс, ну и делайте это ф-цией endsWith, которая именно для этого и предназначена.  Неплохо и QString::right. Вместо этого Вы привлекаете "супер-тул", видимо полагая что "чем больше наворочено - тем лучше, круче". Но все как раз наоборот  :)


Название: Re: QRegExp проверка расширения[РЕШЕНО]
Отправлено: Zeka13 от Март 22, 2012, 16:01
Хорошо, больше не буду блокировать темы, а вот извиняться буду сколько захочу.

Я делал так, как умею, вашими способами я не умею...

Мне опытный программист посоветовал Шлее, так что наверное я его всё-таки дочитаю