\ E не может заменить из = '\ E \\ E \ 10.1.2.154 \ E \ bcs \ E \ 30877_P9999_Adult {2} _02_05_2019_0329p.pdf' - PullRequest
0 голосов
/ 13 февраля 2019
var str='\E\\E\10.1.2.154\E\bcs\E\30877_P9999_Adult{2}_02_05_2019_0329p.pdf';
var res=str.replace('\E', '');

Я получаю возврат, как это:

\E.1.2.154EcsE877_P9999_Adult{2}_02_05_2019_0329p.pdf

Мне нужно заменить все '\E' из строки и ожидая вывода, как это (\\10.1.2.154\bcs\30877_P9999_Adult{2}_02_05_2019_0329p.pdf).Некоторые тела, пожалуйста, сообщите об этом.Я попытался сделать несколько способов исправить это.Неудачно.Когда я пытался с C #, он работал нормально.

static void Main(string[] args)
{
    string str=@"\E\\E\10.1.2.154\E\bcs\E\30877_P9999_Adult{2}_02_05_2019_0329p.pdf";
    str=str.Replace(@"\E","");
    Console.WriteLine(str);
    Console.Read();
}

Но мне это нужно в JavaScript.

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

В JavaScript эквивалент префикса C # @ равен String.raw, за которым следует шаблонный литерал (обратите внимание на backtics).

И для замены всех вхождений, а не только одного, вам нужно передать регулярное выражение в replace с модификатором g.

var str=String.raw`\E\\E\10.1.2.154\E\bcs\E\30877_P9999_Adult{2}_02_05_2019_0329p.pdf`;
var res=str.replace(/\\E/g, '');

console.log(res);

Примечание: обратная косая черта в регулярном выражении является escape-символом, поэтому вам нужно \\ для одной буквенной обратной косой черты.

Если по какой-то причине вы действительно хотите избежать использования регулярных выражений, то есть трюк split/join, но он немного медленнее:

var str=String.raw`\E\\E\10.1.2.154\E\bcs\E\30877_P9999_Adult{2}_02_05_2019_0329p.pdf`;
var res=str.split(String.raw`\E`).join('');

console.log(res);

Старые двигатели JS

Для более старых двигателей JS, которые не поддерживают String.raw, необходимо использовать стандартные строковые литералы, которые используют обратную косую черту в качестве escape-символа,Тогда вам нужно удвоить их все.Но это нужно только тогда, когда вы пишете строку как литерал.Когда вы получаете строку через некоторый API, нет необходимости изменять строку перед выполнением замены:

var str='\\E\\\\E\\10.1.2.154\\E\\bcs\\E\\30877_P9999_Adult{2}_02_05_2019_0329p.pdf';
var res=str.replace(/\\E/g, '');

console.log(res);
0 голосов
/ 13 февраля 2019

var str='\E\\E\10.1.2.154\E\bcs\E\30877_P9999_Adult{2}_02_05_2019_0329p.pdf';
var res=str.replace(/\\E/g, '');
console.log(str, res)

Вы должны использовать RegExg, чтобы исключить выход внутри строки в JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...