PDA

Просмотр полной версии : обратный слеш "\"


vladius
08.01.2008, 13:25
Здрасть.
не могу корректно разобрать строку :( Возник вопрос с обратным слешем.
дело в том, что обратный слеш можно отобразить только таким образом "\\"


loc_str = "csdf\sdfsd\dfsdd\name.exe";
var n1 = loc_str.lastIndexOf("\\");
var n2 = loc_str.lastIndexOf(".");
fname = loc_str.substring(n1, n2);
trace("fname "+fname);


выводится должно name

что не так, подскажите плз

etc
08.01.2008, 13:41
loc_str = "csdf\\sdfsd\\dfsdd\\name.exe";

vladius
08.01.2008, 13:58
да, я понимаю. это тоже первое, что я хотел сделать.
но исходная строка именно с одинарным слешем.
значит нужно заменить одинарный слеш на двойной. но тут то сталкиваемся с той же проблемой, то и в первом посте.


loc_str = "csdf\sdfsd\dfsdd\name.exe";
loc_str = ReplaseOneWithEnather(loc_str, "\\", "\\\\");
trace(loc_str)

//параметры: строка, что заменять, на что заменять
function ReplaseOneWithEnather(str, simb1, simb2) {
var tmp_str = "";
var tmp_array1 = str.split(simb1);
for (var i = 0; i<tmp_array1.length; i++) {
tmp_str += tmp_array1[i];
if (i != tmp_array1.length-1) {
tmp_str += simb2;
}
}
return (tmp_str);
}


другими словами никак нельзя найти символ "\"

etc
08.01.2008, 14:02
Не надо ничего подобного делать, работающее решение я привел в первом посте. И то, что исходная строка с одинарными слешами вам только кажется. Прочитайте, что такое одинарный слеш и почему для вывода нормального слеша нужно ставить два.

2morrowMan
08.01.2008, 14:42
Откуда берется loc_str? Возможно там уже стоит "\\", но вы об этом не знаете...

†‡Paladin‡†
08.01.2008, 15:00
Откуда берется loc_str? Возможно там уже стоит "\\", но вы об этом не знаете...
омг.. Что значит откуда? Там явное присваивание первой же строчкой. Автор до сих пор не проэкранировал слэш в своем коде.

vladius
08.01.2008, 15:20
сорри, сам глупость написал.
все решилось.