Замените одиночную обратную косую черту "\" двойными обратными косыми чертами "\\"

У меня есть строка с файловым путем. Я хочу заменить все одиночные обратные косые черты ("\") двойными обратными косыми чертами ("\\").

   var replaceableString = "c:\asd\flkj\klsd\ffjkl";
   var part = /@"\\"/g;
   var filePath = replaceableString .replace(part, /@"\\"/);
   console.log(filePath);

Консоль показала мне это.

   c:asdlkjklsdfjkl

Я нашел что-то вроде этого, к сожалению, это не сработало. Замена\на \\

Ответ 1

var replaceableString = "c:\asd\flkj\klsd\ffjkl";
alert(replaceableString);

Это предупредит вас c:asdlkjklsdfjkl потому что "\" - это escape-символ, который не рассматривается.

Чтобы иметь обратную косую черту в вашей строке, вы должны сделать что-то вроде этого.

var replaceableString = "c:\\asd\\flkj\\klsd\\ffjkl";
alert(replaceableString);

Это предупредит вас c:\asd\flkj\klsd\ffjkl

JS Fiddle

Подробнее о вариантах Escape

Если вы хотите, чтобы ваша строка имела "\" по умолчанию, вам следует избегать ее. Используйте функцию escape()

var replaceableString = escape("c:\asd\flkj\klsd\ffjkl");
alert(replaceableString);

JS Fiddle

Ответ 2

Пытаться:

   var parts = replaceableString.split('\\');
   var output = parts.join('\\\\');

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

Ответ 3

У вас есть несколько проблем в коде.

  1. Чтобы получить переменную \ в вашей строковой переменной, вам нужно ее избежать.

    Когда вы создаете такую строку: replaceableString = "c:\asd\flkj\klsd\ffjkl"; символы с символом \ before рассматриваются как escape-последовательности. Поэтому во время создания строки он пытается интерпретировать escape-последовательность \a, так как это недопустимо, он сохраняет a в строке. Например, \n было бы интерпретировано как новая строка.

  2. Я предполагаю, что @ исходит из примера.net. Javascript не знает "сырые" строки.

  3. удалите цитаты из вашего регулярного выражения.

Это будет делать то, что вы хотите:

var string = "c:\\asd\\flkj\\klsd\\ffjkl";
var regex = /\\/g;
var FilePath = string.replace(regex, "\\\\");

Ответ 4

\является escape-символом. Поэтому replaceableString не содержит обратных косых черт.

Чтобы исправить это, вы должны объявить строку следующим образом:

var replaceableString = "c:\\asd\\flkj\\klsd\\ffjkl";

Ответ 5

Если у вас нет контроля над содержимым строки, в которой вы пытаетесь найти обратную косую черту, и она содержит значения SINGLE \ (например, переменная myPath содержит C:\Some\Folder\file.jpg), то вы можете фактически ссылаться на сингл обратная косая черта в JavaScript как String.fromCharCode(92).

Итак, чтобы получить имя файла в моем примере с файловой дорожкой выше.

var justTheName = myPath.split(String.fromCharCode(92)).pop();

Ответ 6

В случае соответствия строк лучше использовать encodeURIComponent, decodeURIComponent.

match(encodeURIComponent(inputString));

function match(input)
{

for(i=0; i<arr.length; i++)
{
if(arr[i] == decodeURIComponent(input))
return true;
else return false;
}
}

Ответ 7

В случае одной обратной косой черты в строке метод замены javascript не позволил мне заменить одиночную косую черту.

Вместо этого мне пришлось использовать метод split, который возвращает массив разделяемых строк, а затем объединяет строки без обратной косой черты (или того, что вы хотите заменить)

Решение (замененная обратная косая черта с подчеркиванием):

var splitText = stringWithBackslash.split('\\');
var updatedText = splitText[0] + '_' + splitText[1];

Ответ 8

Сначала закодировать строку

затем замените все вхождения% 5C% 5C% 5C

В конце декодируют строку

var result = encodeURI(input);
result=decodeURI(result.replace(/%5C/g,"%5C%5C"));