Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Замена косай черты 
:(
    Опции темы
omka
Дата 6.11.2008, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 22.11.2007

Репутация: нет
Всего: нет



Подскажите:
Есть строка такого вида "C:\temp\dir\". Как сделать что бы косая черта распознавались как косая чёрта а не как спецсимвол? Нужно чем-то заменить черту? Как это сделать?
PS: Эта строка, после некоторых манипуляций, вставляется в текстфилд и должна иметь вид: "C:\temp\dir\"

Это сообщение отредактировал(а) omka - 6.11.2008, 16:58
PM MAIL   Вверх
Zeroglif
Дата 6.11.2008, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 644
Регистрация: 22.9.2005

Репутация: 1
Всего: 66



Код

alert('C:\\temp\\dir\\');

PM MAIL WWW   Вверх
omka
Дата 6.11.2008, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 22.11.2007

Репутация: нет
Всего: нет



Наверное не точно объяснил в чём проблема.
1 Строка может быть любой.
2 после получения этой строки она складыватся с другой строкой. (в момент сложения строка уже без слешей).
3 результирующая строка вставляется в текстфилд

Пример:
1-я строка "C:\temp\dir\"
2-я строка "folder"

Когда складываю строки имею C:tempdir\ + folder. (слеши потерялись)

Надо их как то replace() только не знаю как)
PM MAIL   Вверх
destrd
Дата 6.11.2008, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 1.10.2008

Репутация: нет
Всего: 4



Ну как-то так можно сделать
Код

str = str.replace(/\\/g, "\\\\");

--------------------
Some people, when confronted with a problem, think, "I known, I'll use regular expressions." Now they have two problems.        -- Jamie Zawinski in comp.lang.emacs
PM MAIL ICQ   Вверх
bars80080
Дата 6.11.2008, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 44
Всего: 315



наверное данные проходят определённуб обработку, прежде чем попадают под твои действия, и наверное эта обработка - засунуть в БД и ты уже достаёшь их оттуда. так?
PM MAIL WWW   Вверх
ksnk
Дата 6.11.2008, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



bars80080
Цитата

наверное данные проходят определённуб обработку

Угу... Вероятно, они складываются вот так вот "$variable1$variable2" smile


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
omka
Дата 10.11.2008, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 22.11.2007

Репутация: нет
Всего: нет



Ну как-то так можно сделать
Код

str = str.replace(/\\/g, "\\\\");


Не помогает((( FireBug показывает:
Код

illegal character
[Break on this error] var currentFolder = "C:\dsts\dfdf\g\".replace(/\\/g, "\\\\");;\n


Походу что-то другое надо...
Суть программы вот в чём: сканирую файловую систему сервера, при выборе нужной папки - путь к ней вставляется в поле на другой странице... Вот этот путь формируется их того что приходит с сервера ("C:\dsts\dfdf\g\") + имя текущей папки ("folder").
Если просто склеивать строки - не получается, тк путь приобретает такой вид: "C:dstsdfdfgfolder....

PS: на сервере изменение пути не подходит - надо именно на клиенте.
PM MAIL   Вверх
bars80080
Дата 10.11.2008, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 44
Всего: 315



может на сервере провести необходимую обработку и поставлять клиенту нормальный путь?
PM MAIL WWW   Вверх
omka
Дата 10.11.2008, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 22.11.2007

Репутация: нет
Всего: нет



Цитата(bars80080 @ 10.11.2008,  17:48)
может на сервере провести необходимую обработку и поставлять клиенту нормальный путь?

А на клиенте это сделать возможно?
PM MAIL   Вверх
bars80080
Дата 10.11.2008, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 44
Всего: 315



фишка в том, что C:dstsdfdfgfolder - это не нормальный путь, его посечили видимо при выемке из базы. тогда надо разбираться с ней.
если вырубка происходит при передаче клиенту, то надо просто превратить \ в спецсимвол, либо экранировать. самое простое провести url-кодирование

но в любом случае, надо прежде всего разобраться, на каком конкретно этапе происходит инквизиция. может они уже у тебя в базе хранятся в обрезанном состоянии. тогда задача вообще взята не с того конца
PM MAIL WWW   Вверх
destrd
Дата 10.11.2008, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 1.10.2008

Репутация: нет
Всего: 4



Цитата(omka @  10.11.2008,  12:37 Найти цитируемый пост)
Не помогает((( FireBug показывает:

Ну понятное дело. При объявлении слеши уже надо экранировать. т.е.
Код

var currentFolder = "C:\\dsts\\dfdf\\g\\".replace(/\\/g, "\\\\");

Тогда на выходе и получится по два слеша. Определись, когда у тебя слеши пропадают.
--------------------
Some people, when confronted with a problem, think, "I known, I'll use regular expressions." Now they have two problems.        -- Jamie Zawinski in comp.lang.emacs
PM MAIL ICQ   Вверх
omka
Дата 12.11.2008, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 22.11.2007

Репутация: нет
Всего: нет



Путь выводится на клиентской странице. Выводится правильно. Т.е. с сервера приходит "C:\folder\dir".
Но при обработке этой строки в скрипте получается что именно там слеш распознаётся как спецсимвол и неучитывается.
PM MAIL   Вверх
ksnk
Дата 12.11.2008, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



omka
  • Как (кусок кода) выводится эта пременная в окно броузера?
  • Как (кусок кода) используется эта переменная, чтобы такой странный эффект получился?
Вероятно, слеши менять стоит не в JavaScript'е а в Php smile


Это сообщение отредактировал(а) ksnk - 12.11.2008, 11:32


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
omka
Дата 12.11.2008, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 22.11.2007

Репутация: нет
Всего: нет



Ну вот к примеру код 
Код

alert("C:\dir\t".replace(/\\/, "\\\\"));


При выводе даёт такой результат: "C:dir".

Вывод: распознал \t как спецсимвол и не вывел в alert. Т.е. замену на клиенте произвести проблемматично....?
PM MAIL   Вверх
bars80080
Дата 12.11.2008, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 44
Всего: 315



Цитата(omka @  12.11.2008,  14:01 Найти цитируемый пост)
При выводе даёт такой результат: "C:dir".

Вывод: распознал \t как спецсимвол 

а куда этот слэш c:\ делся?
PM MAIL WWW   Вверх
omka
Дата 12.11.2008, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 22.11.2007

Репутация: нет
Всего: нет



Исчез. Очевидно потому что \d никакой символики не несёт, в отличии от \t. Поэтому он просто подставил символ d...
PM MAIL   Вверх
ksnk
Дата 12.11.2008, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



omka, я вас как художник художника спрашиваю, с синтаксисом JavaScript знакомы? smile

Чтобы пример с Алерт выдавал то, что от него, по всей видимости, требуется нужно написать 
Код

alert("C:\\dir\\t");

Чтобы из PHP породить разумно выполняющуюся конструкцию нужно сделать примерно так
Код

$text="c:\\dir\\t";
printf( 'alert("%s");',addslashes($text));





--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
omka
Дата 12.11.2008, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 22.11.2007

Репутация: нет
Всего: нет



ksnk
Как художник художнику отвечаю - знаком. Сайт написан на java. Прекрасно понимаю что таким выводом я получу то что вижу. Я просто веду к тому что:
как мне заменить обратный слешь на клиенте. Мне интересно в строке, которая приходит с сервера на клиент в таком виде "C:\dsd\t\tr, можно ли как нибудь выщемить эти слеши. smile  
С JS работал не особо много поэтому многого не знаю. В принципе поэтому и написал.... Может я чего то недопонял....

Если нельзя - буду сереверную сторону ковырять, но это потянет за собой много всего нехорошего) уже пробовал)
PM MAIL   Вверх
ksnk
Дата 12.11.2008, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



Цитата

буду сереверную сторону ковырять

Вот это правильно. 

Можно, конечно, javascript'ом заменять символы \a\b... \z на \\a \\b ... \\z, но это путь, imho, ущербен. Можно нарваться на какие-нибудь особенные спецсимволы, с которыми регулярки и заменялки откажутся работать... Причем для разных броузеров эта фича может работть по своему... 


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0923 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.