Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Разбор строки (https://javascript.ru/forum/misc/1727-razbor-stroki.html)

GRol 08.09.2008 13:37

Разбор строки
 
Всем доброго времени суток. Не судите строго, в js совсем новичёк...
У меня задачка следующая. Мне надо менять имя файла в input type = "File"

т.е предположим есть строка в инпуте:

c:\DSP\рабочие инструкции\Планы.txt

Мне надо заменить слово находящиеся между \ и . на какое то своё.

Я нашёл функцию замены rez = str_replace(inStr,replStr, string);
inStr - это значение в строке от \ до . (т.е. слово Планы)
Вопрос - как мне из моей строки получить необходимый текст от \ до . ?

ZoNT 08.09.2008 13:51

ты не сможешь подставить в инпут(файл) другое значение, так как это нарушение политики безопасности.

GRol 08.09.2008 14:18

т.е. я не могу это функционально сделать в JS вообще?

дело в том что у меня есть 5 полей input одинакового типа File.
каждое из них заполняет пользователь, но обязательно есть статические имена вкладываемых файлов для каждого поля, т.к. пользователь может файл назвать по другому... поэтому и надо принудительно менять имена файлов перед отправкой страницы на сервер

Kolyaj 08.09.2008 14:32

Цитата:

Сообщение от GRol
но обязательно есть статические имена вкладываемых файлов для каждого поля, т.к. пользователь может файл назвать по другому... поэтому и надо принудительно менять имена файлов перед отправкой страницы на сервер

Че?

GRol 08.09.2008 14:46

в общем неважно)
Это сложно правильно сформулировать... в
принципе если не вдаваться в подробности я просто спросил

как получить значение из строки находящееся между знаками / и .

Kolyaj 08.09.2008 15:41

GRol, на каком языке-то? В первом сообщении был PHP.

Андрей Параничев 08.09.2008 15:48

GRol,
Цитата:

Сообщение от GRol
поэтому и надо принудительно менять имена файлов перед отправкой страницы на сервер

Вы все делаете неправильно. Переименовывать файлы нужно уже на сервере, а не на клиенте. Почитайте об этом на php.net.

anasana 06.12.2008 15:28

Не имеет значения что именно хочет сделать автор, важно что он спросил. Вот у него допустим в поле input "name='file' type='file' onchange='some_func(this.value);'", пользователь выбрал файл:
"c:\DSP\рабочие инструкции\Планы.txt"
И вопрос заключался в том, как регуляркой на ЯваСкрипте получить в переменную браузера слово, находящиеся между "\" и ".", т.е., в его примере это - "Планы", а в теме вместо этого почему-то переползли на безопасность инпутов,.. Задачи то разные бывают, мне, например, нужно выгрызть имя файла для проверки именно имени и именно на стороне клиента на возможные левые символы + инфу про всю нелатинницу, что бы пользователь ещё до отправки файла на сервер сразу знал, что часть неправильных, с моей точки зрения, символов в имени его файла, при сохранении ко мне на сервер, будут вырезаны и точно потеряются.

Gvozd 06.12.2008 16:32

anasana,во первых незачем поднимать тему 3-хмесячной давности.
во вторых, если вы еще не все буквы алфавита выучили, то я вам глубоко сочуствую, ибо автор просил именно
Цитата:

Сообщение от GRol
Мне надо заменить слово находящиеся между \ и . на какое то своё.

и в третьих, если раз вычто-то знаете по теме вопроса(хотя это не так), то могли бы кусок кода выложить

anasana 06.12.2008 18:40

Сорри не глянул на дату... меня уже на каком-то форуме за подобное назвали гостём-некрофилом :), но тогда я вообще такое вытянул...
От темы JS я тоже далёк и буквы для меня - тоже проблема :( см. ниже, поэтому тот код, который за сегодня мне удалось собрать в кучу очень неопрятный:
function symbols(symb) { var lastdot, name, ext, i, j, ss, ts, sb, bb, sterr = '', als = '._ !@#$%^&()+=[],~-'; // + latin letters only
symb = symb.substring(symb.lastIndexOf('\\')+1, symb.length); lastdot = symb.lastIndexOf('.'); if (lastdot==-1) { lastdot = symb.length; }
name = symb.substr(0, lastdot); ext = symb.substring(name.length, symb.length); ext = ext.toLowerCase(); symb = name+ext;
if (ext!='.zip' && ext!='.rar' && ext!='.sit' && ext!='.png') { alert('Bad extention:'+ext+' (.zip, .rar, .sit or .png only)'); return false; }
for (i=0; i<=symb.length-1; i++) { ss = 0; ts = 0; sb = 0; bb = 0;
for (j=0; j<=als.length-1; j++) { if (symb.charAt(i) == als.charAt(j)) { ss++; } }
if (symb.charAt(i)>=0 && symb.charAt(i)<=9) { ts++; }
if (symb.charAt(i)>='a' && symb.charAt(i)<='z') { sb++; }
if (symb.charAt(i)>='A' && symb.charAt(i)<='Z') { bb++; }
if (ss+ts+sb+bb == 0) { sterr += symb.charAt(i); } }
if (sterr !='') { alert('Filename with latin letters only? Ok? Ошибки в следующих знаках ' + sterr); }
return false; }
В первом посте главным я посчитал:
> Вопрос - как мне из моей строки получить необходимый текст от \ до . ?
То, что просил автор у меня в переменной symb.

anasana 06.12.2008 19:19

Поправочка: то, что просил автор находится в переменной name.

Zibba 06.12.2008 22:55

А почему не делать так:
var str = "c:/DSP/рабочие инструкции/Планы.txt";
var reg = /\/(\S*)\./g;

var result = str.match(reg);
if(result != null) var res = result[0];
res = res.substr(1,res.length-2);
alert(res);


И быстрее, и вроде бы то, что надо!?

Gvozd 06.12.2008 23:58

ЯТЪ!!!!!!!!!!!!11111111111:( :( :mad: :mad:

Zibba 07.12.2008 00:04

Можете считать меня конченным леммингом за то что я ответил в теме столетней давности, но все же она как ни как поднялась (а как по мне так лучше поднять старую тему чем создавать новую).
И все же я не пойму смысла Вашего содержательного поста. O_o

Gvozd 07.12.2008 01:08

мой пост является эвфемизмом от гулящей женщины.
просто накопилось.
у нас тут вроде ворум, а не справочник.
люди справштивают - им отвечают.
тот, кому надо было прояснить этот вопрос, уже давно свалил с форума
я занимаюсь злобным оффтопиком, но еще более глупым нахожу помощь человеку которому это не нужно, и который об этом даже не узнает

Zibba 07.12.2008 01:16

На счет справочника полностью согласен.
Просто был поражен кодом найденным anasana и решил показать что есть более гибкие способы решений похожих задач.
P.S. А вообще было бы не плохо, если бы на форуме был раздел FAQ. Тогда либо 70% вопросов отпадало, либо отсылалось к чтению данного раздела.

Gvozd 07.12.2008 01:37

ага FAQ ,будет состоять из нескольких ссылок на справочнипк и статейник?
я просто себе это слабо представляю

Zibba 07.12.2008 01:40

Ну или хотя бы из фразы "FAQ == http://www.javascript.ru/ (Читай статьи)"

Gvozd 07.12.2008 01:52

ага, сделать кнопку быстрой вставки этой фразы у всех со статусом от кандидата и выше, например))))))))
а вообще,если по серьезному, то на статьи я и так могу отослать человека.
а допустим по поводу топик-сабжа непосредственного ответа в стаьях нету. зато он очевиден, после прочтения их, и справочника

гость 04.03.2009 00:33

вышел на эту тему через поисковик и информация оказалась очень полезной! anasana и Zibba, спасибо вам за информацию!


Часовой пояс GMT +3, время: 05:11.