1743 / 663 / 87
Регистрация: 01.10.2012
Сообщений: 3,279
|
|
1 | |
Замена подстрок по образцу команды rename21.05.2015, 06:51. Показов 657. Ответов 9
Метки нет Все метки)
(
Здравствуйте
Потребовалось сделать простенький диалог для поиска и переименования объектов в списке (которых может быть много). Пользователь задает строку поиска и строку замены. Строки могут содержать wildcadrs (*, ?). Грубо говоря "нужно сделать как в Far, команде rename" (и др подобных оболочках). Я много слышал о "регулярных выражениях" и их неукротимой мощи ![]() С уважением Игорь
0
|
|
21.05.2015, 06:51 | |
Ответы с готовыми решениями:
9
Замена подстрок Замена подстрок в строке Замена подстрок в файле Нахождение подстрок и их замена. |
Модератор
2980 / 2133 / 451
Регистрация: 26.03.2015
Сообщений: 8,300
|
||||||
21.05.2015, 15:08 | 2 | |||||
QString::replace(const QRegExp &, const QString &)
Добавлено через 14 минут Как замена может быть не фиксированной? ren *.c* *.cpp Вы ищите ".c*" и заменяете на ".cpp" ren test*.c* test.c* Вы ищите "test*.c" и заменяете на "test.c" Добавлено через 8 минут
0
|
1743 / 663 / 87
Регистрация: 01.10.2012
Сообщений: 3,279
|
|
21.05.2015, 15:18 [ТС] | 3 |
Строка поиска задает что найти, напр
0
|
Модератор
2980 / 2133 / 451
Регистрация: 26.03.2015
Сообщений: 8,300
|
|
21.05.2015, 15:52 | 4 |
Это отдельная задача. И для начала нужно её сформулировать.
Вы можете описать, что должна выдавать функция "getPattern" на выходе? (для всех возможных входов) Добавлено через 2 минуты Например, если пользователь напишет: ren test*.c* foo*boo*
0
|
1743 / 663 / 87
Регистрация: 01.10.2012
Сообщений: 3,279
|
|
21.05.2015, 16:00 [ТС] | 5 |
Так напишите в консоли и посмотрите (создав сначала подходящий файл).
Не всегда есть детальная формальная постановка, более того это бывает относительно редко. В данном случае нужно "сделать по образцу" (хорошо еще общедоступному), о чем и сказано в названии топика. Это нормально
0
|
Модератор
2980 / 2133 / 451
Регистрация: 26.03.2015
Сообщений: 8,300
|
|
21.05.2015, 17:58 | 6 |
Команда "ren *.c* foo*boo*" заменяет первые три символа в имени файла на "foo", а к расширению файла добавляет "boo".
Добавлено через 1 минуту myfile.c1 -> fooile.c1boo Добавлено через 1 час 8 минут Вот я и говорю, что это отдельная задача, не имеющая никакого отношения к регулярным выражениям. Команда ren использует первый параметр для поиска, а второй праметр - для задания нового имени. То есть, новое имя файла никак не зависит от первого параметра. Таким образом, Вам нужно: 1. Найти объекты, которые нужно переименовать, используя RegEx и первый параметр. 2. Вычислить для найденных объектов новые имена, используя соответсвующий алгоритм... 3. Переименовать объекты Замечания по пункту 2: 1. Придётся написать свою функцию... либо найти готовую в интернете 2. Не факт, что windows и far используют одинаковый алгоритм з.ы. Подробное описание того, как работает rename можно найти здесь: http://superuser.com/questions... -wildcards Там же можно найти код функций, которые (по заверениям их авторов) реализуют данный алгоритм.
1
|
1743 / 663 / 87
Регистрация: 01.10.2012
Сообщений: 3,279
|
|
21.05.2015, 18:11 [ТС] | 7 |
Так я ж с этим никак не спорю - для того и топик создал
![]() Был я на этой странице сегодня - ну исходники не те что "надо брать". Ну хоть что-то про алгоритм. Тут типовая проблема - трудно нагуглить т.к. все бросаются пояснять как работают * и ?, не пробиться через кучу этого мусора. Спасибо за участие
0
|
Модератор
2980 / 2133 / 451
Регистрация: 26.03.2015
Сообщений: 8,300
|
|
21.05.2015, 19:44 | 8 |
Упоминание регулярных выражений сбило меня с толку.
Алгоритм на той странице, вроде, подробно расписан, и реализовать его не займёт много времени?
0
|
1743 / 663 / 87
Регистрация: 01.10.2012
Сообщений: 3,279
|
|
23.05.2015, 07:38 [ТС] | 9 |
Да, все получилось. Нужно было только внимательно прочитать (вместо лазания по гугле
![]()
0
|
6434 / 1765 / 300
Регистрация: 10.12.2013
Сообщений: 6,221
|
|
30.12.2016, 03:40 | 10 |
неохота поднимать вирт. машину и проверять,
но память мне нашёптывает, под OpenVMS такой wildcard срабатывал.
0
|
30.12.2016, 03:40 | |
Помогаю со студенческими работами здесь
10
Замена всех подстрок в строках Случайная замена нескольких подстрок Замена подстрок, которые не в кавычках Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |