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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QRegExp проверка расширения[РЕШЕНО]  (Прочитано 5762 раз)
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"  Должно быть:есть совпадение / С моим регепсом: есть совпадение

Возможно вообще что-то придумать?
Заранее спасибо
« Последнее редактирование: Март 22, 2012, 13:42 от Zeka13 » Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #1 : Март 22, 2012, 12:09 »

Через QFileInfo бери только имя файла, и его уже прогоняй через regexp.
Записан
mutineer
Гость
« Ответ #2 : Март 22, 2012, 12:10 »

QRegExp rx("[^/]\\.plot$");

попробуй так
Записан
V1KT0P
Гость
« Ответ #3 : Март 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);
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #4 : Март 22, 2012, 12:56 »

а что плохого в QFileInfo(fileName).suffix() == "plot" ?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Zeka13
Гость
« Ответ #5 : Март 22, 2012, 13:41 »

спасибо всем, кто ответил, первое же решение подошло
Код
C++ (Qt)
QRegExp rx("[^/]\\.plot$");
правда можно тогда упростить до QRegExp rx("\\.plot$");

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

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

ещё раз спасибо
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #6 : Март 22, 2012, 14:22 »

1) Перестаньте извиняться по всякому поводу, вежливость тоже должна быть в меру

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

3) Чем меньше Вы будете забивать себе голову шлеями и жасминами - тем лучше. Это не программирование а так, "красивая обертка". Возможно принятое решение будет работать и делать все что нужно, но оно плохо потому что неадекватно, не соответствует задаче. Вам надо без затей проверить суффикс, ну и делайте это ф-цией endsWith, которая именно для этого и предназначена.  Неплохо и QString::right. Вместо этого Вы привлекаете "супер-тул", видимо полагая что "чем больше наворочено - тем лучше, круче". Но все как раз наоборот  Улыбающийся
Записан
Zeka13
Гость
« Ответ #7 : Март 22, 2012, 16:01 »

Хорошо, больше не буду блокировать темы, а вот извиняться буду сколько захочу.

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

Мне опытный программист посоветовал Шлее, так что наверное я его всё-таки дочитаю
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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