2015-11-30 4 views
0

Мне нужно отправить путь к папке в MySQL. Поэтому я избежал каждой обратной косой черты. Путь к отправке через JavaScript будет:Эффективное создание пути папки с обратными косыми чертами

\\\\192.168.0.1\\foo\\bar 

Это в конечном счете будет сохранен как (in db):

\\192.168.0.1\foo\bar 

Итак, я написал следующий код:

 fpath = fpath.replace(/\\+/g,'\\\\'); // Replace multiple occurences of backslash with double backslash 

     var fpathLen = fpath.length; 

     if(fpath.charAt(fpathLen-1) == '\\') 
      fpath = fpath.substring(0,fpathLen-2); // Remove the trailing backslash if any 

     if(fpath.charAt(0) == '\\') { 
      fpath = '\\\\' + fpath; // Add 2 more backslash before sending the string to MySQL 
     } 
     else 
      fpath = '\\\\\\\\' + fpath; // If string is without a leading backslash, insert 4 backslash 

Но это Безразлично Кажется, это эффективный способ сделать что-то! Например, я добавил вручную 4, в другом случае 8 обратную косую черту, чтобы сделать ее 2 и 4 соответственно на стороне js. Есть ли лучший способ достичь этого?

Edit: Для ввода пути, как fpath = \\1.1.1.1\\\\\\\\foo\bar\\\config, выход должен быть \\\\192.168.0.1\\foo\\bar

+0

Является ли требование заменить '\\\\ 192.168.0.1 \\ Foo \\ bar' с' \\ 192.168.0.1 \ foo \ bar'? – guest271314

+0

@ guest271314 Нет. Для входного пути, такого как: '\\ 192.168.0.1 \ foo \ bar \', необходимо преобразовать в '\\\\ 192.168.0.1 \\ foo \\ bar' –

ответ

2

EDIT:

Вы можете сделать это с помощью двух регулярных выражений:

fpath = fpath.replace(/\\+/g,'\\\\'); 

и

fpath = fpath.replace(/^\\*(.*?)\\*$/,'\\\\\\\\$1'); 

Demo:

function makeFpath() { 
 
    fpath = document.getElementById("fpath").value 
 
    fpath = fpath.replace(/\\+/g, '\\\\').replace(/^\\*(.*?)\\*$/, '\\\\\\\\$1'); 
 

 
    document.getElementById("out").innerHTML = fpath 
 
} 
 

 
makeFpath()
<input id="fpath" onkeyup="makeFpath()" onchange="makeFpath()" value="\\\1.1.1.1\\\\\\\\foo\bar\\\config\" style="width: 100%" /> 
 
<div id="out"></div>


OLD: Я думаю, что вы получили немного перепутались со всеми спасаясь *, это делают это для вас? :

fpath = fpath.replace(/\\/g,'\\\\'); // replaces a single \ by one double \\ 

вы не что-нибудь еще, если я понял вашу проблему правильно

+0

Что произойдет, если' fpath = \\ 1.1.1.1 \\\\\\\\ foo \ bar \\\ config \ '? Я должен справиться с этим, и он должен стать «\\\\ 1.1.1.1 \\ foo \\ bar \\ config' –

+1

, вы не упомянули об этом в своих вопросах :(пожалуйста, обновите его – CoderPi

+1

Человек, вопрос не был очевиден Но я думаю, ответ теперь тот, который вы хотели – CoderPi

Смежные вопросы