Robby
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Zloy_Gelud tavria2 коды работают но результат дают не тот что надо. Читать дальше результаты работы.. Смысл в том чтобы отсечь расширение и двойное расширение но оставить всю часть имени целой. Я делал это так Цитата: sFileName=String.Mid(file_path, String.ReverseFind(file_path, "\\") + 1, -1); -- получаем имя файла c расширением sFolderName = String.Mid(sFileName, 1, (String.Find(sFileName, ".", 1, false)-1)); -- извлекаем часть имени файла до первой точки | результат аналогичный использованию регулярного выраженния, тут вроде бы все нормально пока не попадуться файлы с одинаковой частью до точки, например: a.bbb.ext a.bbb.ext.ext a.ccc.ext a.ccc.ext.ext В результате эти раные файлы при копировании попадут в одну папку с именем a, а нужно чтобы в разные первые два файла в папку a.bbb а вторые два в папку a.ccc. Регулярные выражения скорей всего будут работать, но патерн для поиска нужен другой. Цитата: string.gsub (s, pattern, repl [, n]) Returns a copy of s in which all (or the first n, if given) occurrences of the pattern have been replaced by a replacement string specified by repl, which can be a string, a table, or a function. gsub also returns, as its second value, the total number of matches that occurred. If repl is a string, then its value is used for replacement. The character % works as an escape character: any sequence in repl of the form %n, with n between 1 and 9, stands for the value of the n-th captured substring (see below). The sequence %0 stands for the whole match. The sequence %% stands for a single %. If repl is a table, then the table is queried for every match, using the first capture as the key; if the pattern specifies no captures, then the whole match is used as the key. If repl is a function, then this function is called every time a match occurs, with all captured substrings passed as arguments, in order; if the pattern specifies no captures, then the whole match is passed as a sole argument. If the value returned by the table query or by the function call is a string or a number, then it is used as the replacement string; otherwise, if it is false or nil, then there is no replacement (that is, the original match is kept in the string). | Я правильно понял, что % используетя для экранировки чтобы найти спецсимвол, например точку? А весь синтаксис должен быть Perl? Есть ли документация по Lua на русском? Сайт http://www.lua.ru/doc/ не работает. Добавлено: http://www.lua.ru/doc/ заработал, пойду пока почитаю... | Всего записей: 879 | Зарегистр. 28-09-2003 | Отправлено: 10:49 06-09-2010 | Исправлено: Robby, 11:00 06-09-2010 |
|