Преобразование имен файлов.
От: Ромашка Украина  
Дата: 03.11.11 18:55
Оценка:
Не дайте мне изобрести велосипед.

Существует файл с именем, скажем "somefile.txt". Существует маска
"????text.log". При натравливании маски на имя файла получается новое
имя файла "sometext.log". Ну или маска "v_*.txt" даст нам на выходе
"v_somefile.txt".

Вопросы
1. Такой механизм замечательно работает в том же фаре. Есть что-то
подобное в .net?
2. Как такое сделать с регулярными выражениями вместо маски файла?
Posted via RSDN NNTP Server 2.1 beta


Всё, что нас не убивает, ещё горько об этом пожалеет.
Re: Преобразование имен файлов.
От: enCobalt  
Дата: 03.11.11 19:02
Оценка: -1
Здравствуйте, Ромашка, Вы писали:

Р>Не дайте мне изобрести велосипед.


Р>1. Такой механизм замечательно работает в том же фаре. Есть что-то

Р>подобное в .net?
Р>2. Как такое сделать с регулярными выражениями вместо маски файла?

Ответный вопрос: "А зачем?"... Тебе это нафига? Вот если ты занят изобретением нового файлового менеджера, который составит конкуренцию фару и тотал коммандеру, то тогда оно конечно да, оно смысл имеет. Но насколько я помню твой предыдущий вопрос касался вещей в совсем другой области. Ты мастер-многостаночник? ))
Хочу инвайт на хабру :)
Re: Преобразование имен файлов.
От: 11molniev  
Дата: 03.11.11 19:04
Оценка:
Здравствуйте, Ромашка, Вы писали:

Р>Не дайте мне изобрести велосипед.


Р>Существует файл с именем, скажем "somefile.txt". Существует маска

Р>"????text.log". При натравливании маски на имя файла получается новое
Р>имя файла "sometext.log". Ну или маска "v_*.txt" даст нам на выходе
Р>"v_somefile.txt".

Р>Вопросы

Р>1. Такой механизм замечательно работает в том же фаре. Есть что-то
Р>подобное в .net?
Да есть. Называется string.
Рискну предположить, что можно немножко поперебирать символы строки маски циклом, внутри которого условие проверяющее "?" или не вопрос. И пихающее в результат содержимое маски или оригинала по этому условию.
Действия по окончанию символов маски или строки вы не определили. Но в любом случае это просто ещё 1-2 if после цикла.

Р>2. Как такое сделать с регулярными выражениями вместо маски файла?

Конечно можно. Но поскольку в конечном итоге все сводиться к элементарному копированию части строки то надобность их использования стоит под большим вопросом.
Re[2]: Преобразование имен файлов.
От: Ромашка Украина  
Дата: 03.11.11 19:15
Оценка:
03.11.2011 21:04, Здравствуйте, 11molniev :
> Р>1. Такой механизм замечательно работает в том же фаре. Есть что-то
> Р>подобное в .net?
> Да есть. Называется string.
> Рискну предположить, что можно немножко поперебирать символы строки

Ну просил же не дать мне изобрести свой велосипед.

> Р>2. Как такое сделать с регулярными выражениями вместо маски файла?

> Конечно можно.

Как? Есть имя файла и регулярное выражение. Как мне используя только эти
две строки получить новое имя файла?
Posted via RSDN NNTP Server 2.1 beta


Всё, что нас не убивает, ещё горько об этом пожалеет.
Re[2]: Преобразование имен файлов.
От: Ромашка Украина  
Дата: 03.11.11 19:25
Оценка:
03.11.2011 21:02, Здравствуйте, enCobalt :
> Ответный вопрос: "А зачем?"... Тебе это нафига? Вот если ты занят
> изобретением нового файлового менеджера, который составит конкуренцию
> фару и тотал коммандеру, то тогда оно конечно да, оно смысл имеет. Но
> насколько я помню твой предыдущий вопрос касался вещей в совсем другой
> области. Ты мастер-многостаночник? ))

Ну вот какого уха тут за меня додумывают, а потом же сами над собой
насмехаться начинают? Все намного проще. Есть два набора входящих
файлов (две маски файлов) в утилите командной строки. Пользователь
должен иметь возможность задать каждому файлу из первого набора
соответствие одному файлу из второго набора. Кстати, это та же самая
задача, агрегировать данные и запихнуть их в веб-сервис SAP R3.
Posted via RSDN NNTP Server 2.1 beta


Всё, что нас не убивает, ещё горько об этом пожалеет.
Re[3]: Преобразование имен файлов.
От: EvgenB Украина  
Дата: 04.11.11 08:25
Оценка: -1
Здравствуйте, Ромашка, Вы писали:

Р>Как? Есть имя файла и регулярное выражение. Как мне используя только эти

Р>две строки получить новое имя файла?

Google никто не отменял

http://www.funduc.com/regexp.htm

от себя порекомендую http://www.ultrapico.com/Expresso.htm в качестве редактора выражений.
Re: Преобразование имен файлов.
От: Neco  
Дата: 04.11.11 12:59
Оценка:
Здравствуйте, Ромашка, Вы писали:

Р>Вопросы

Р>1. Такой механизм замечательно работает в том же фаре. Есть что-то
Р>подобное в .net?
http://msdn.microsoft.com/en-us/library/ms143316.aspx вроде так и работает. хотя я не пробовал.

Р>2. Как такое сделать с регулярными выражениями вместо маски файла?

тока ручками, по-другому не вижу как.
всю ночь не ем, весь день не сплю — устаю
Re: Преобразование имен файлов.
От: Lloyd Россия  
Дата: 04.11.11 13:42
Оценка: -1 :)
Здравствуйте, Ромашка, Вы писали:

Р>Существует файл с именем, скажем "somefile.txt". Существует маска

Р>"????text.log". При натравливании маски на имя файла получается новое
Р>имя файла "sometext.log". Ну или маска "v_*.txt" даст нам на выходе
Р>"v_somefile.txt".

Р>Вопросы

Р>1. Такой механизм замечательно работает в том же фаре. Есть что-то
Р>подобное в .net?

static string ReplaceMask(string input, string mask)
{
    return Regex.Replace(mask, @"[?]+|\*", m => 
    {
        if (Regex.IsMatch(m.Value, "[?]+"))
        {
            return input.Substring(0, m.Value.Length);
        }
        else if (Regex.IsMatch(m.Value, @"\*"))
        {
            return Path.GetFileNameWithoutExtension(input);
        }
        throw new InvalidOperationException();
    });
}



Р>2. Как такое сделать с регулярными выражениями вместо маски файла?


Можно сделать вот так:
static void Main()
{
    Replace("somefile.txt", "^(.{4})", "{1}text.log").Dump();
    Replace("somefile.txt", @"^(.*)\.", "v_{1}.txt").Dump();
}

static string Replace(string input, string mask, string format)
{
    return string.Format(format, Regex.Match(input, mask).Groups.Cast<Group>().Select(g => g.Value).ToArray());
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.