2016-06-30 7 views
0

У меня есть строка в следующем формате.Как заменить обратную косую черту двумя черными пятнами в Javascript

var myStrg = "domain\john"; 

Мне нужно заменить \ с двумя \\ символов, как domain\\john.

Как я могу это достичь?

Я уже прошел множество подобных вопросов и ответов, но никто из них не ответил на это.

Любые предложения были бы весьма полезными.

EDIT 01:

Чтобы сделать этот вопрос ясно, я добавляю больше справочной информации здесь с моим кодом. Как видите, параметр username является параметром. Его формат будет примерно 'domain_name\user_name'. Поэтому, когда я добавляю этот username к URL-адресу, проблема возникает. И я не контролирую полученное значение как имя пользователя.

function myFunction(username) { 
var fullurl = "http://myserver/mysite/_api/web/lists/getbytitle('MyTestList')/items?$select=ID&$filter=Username eq '" + username + "'"; 

NWF$.ajax({ 
    url: fullurl, 
    method: "GET", 
    async: false, 
    headers: { "Accept": "application/json; odata=verbose" }, 
    success: function (data) { 
     //process returned data here 
    }, 
    error: function (data) { 
     alert('Error occurred.'); 
    } 
}); 

}

ответ

1

В соответствии с управляющей последовательностью, \\ представляет одиночный \(backslash)

console.log("domain\\\\john");

Если вы просите заменить один обратный слеш с двойной,

console.log("domain\\john".replace(/\\/g, '\\\\'));

+0

@Downvoter, Ваш _comment_ драгоценна для меня! – Rayon

1

Дело в том, что с помощью этой декларации

var myStrg = "domain\john"; 

Javascript будет хранить "domainjohn", потому что "\ J" рассматривается как "J". Для того, чтобы сохранить его с помощью «\» использовать это:

var myStrg = "domain\\john"; 

И если вы хотите двойной «\» использовать это:

var myStrg = "domain\\\\john"; 

И если вы хотите, чтобы заменить сингл «\» программно с помощью regexs, используйте:

var myStrg = "domain\\john"; 
myStrg.replace(/\\/g,"\\\\") 

EDIT 01 РЕАКЦИЯ

После того, как ваши изменения, я думаю, что, может быть, что вы ищете это:

encodeURIComponent(username) 

Это превратит "domain\\john" в "domain%5Cjohn", который является общепринятым форматом для параметров URL.

Но опять же, как для вызова функции является с "\\"

myFunction("domain\\john"); 
+0

В моем коде я действительно получаю этот myStrg как возвращаемое значение. Поэтому я не знаю, какова будет ценность. Поэтому я не могу добавить к нему двойную обратную косую черту. Но это будет с таким форматом, как «имя_домена \ имя пользователя». Как я должен справиться с этой ситуацией? – Jake

+0

Затем просто используйте последний пример: myStrg.replace (/ \\/g, "\\\\") – Mumpo

+0

Он возвращает строку «domainjohn» – Jake

0

Использование replace и regex вы можете достичь этого:

var str = "domain\\john"; /* only one \ used and being escaped */ 
 
str = str.replace(/\\/g, "\\\\") 
 
console.log(str)

0

Вы может использовать регулярное выражение в replace method. Код ниже не проверен, но regex should work.

var myStrg = "domain\john"; 
myStrg = myStrg.replace(/\\/g, '\\\\'); 

+0

у вас есть дополнительная скобка здесь – dippas