Angular2 экранирующая косая черта Pipe

Я хочу создать канал в angular 2, который заменит «\» в данной строке, которая используется для экранирования специальных символов.

что я сделал до сих пор,

класс трубы следующий

@Pipe({
  name: 'escapeSlashPipe'
})

export class EscapeSlashPipe implements PipeTransform {
  transform (value: string): any{
    value = value.replace(/\\"/g, '"');
    return value;
  }
}

HTML

<p>{{message | escapeSlashPipe}}</h4>

Пример ввода

"ghda\'nja asda\\dasda dasj\' \"das\'da\\d as\\as\\sad"

тогда он должен вернуться

"ghda'nja asda\dasda dasj' das'da\d as\as\sad"

Он должен заменять только косую черту, которая используется для экранирования символов.


person Gautam    schedule 03.11.2017    source источник
comment
Какую именно ошибку вы получаете, потому что я попробовал ваш код, и он работает нормально. Я получаю ожидаемый результат.   -  person AddWeb Solution Pvt Ltd    schedule 03.11.2017
comment
Это дает мне тот же вывод, что и ввод, возвращается та же строка.   -  person Gautam    schedule 03.11.2017


Ответы (2)


Когда вы используете value.replace(/\\"/g, '"');, вы выбираете следующую последовательность символов: \" и заменяете их следующим символом ".

Итак, вы видите, это работает только с двойными кавычками.

Вы можете использовать что-то другое:

let value = "Lorem \\\" ipsum \\' dolorem \\\\ javascript";
// value: Lorem \" ipsum \' dolorem \\ javascript

// Because JavaScript is already able to escape characters by itself
// So I needed to escape also the backslash

value = value.replace(/(\\)(\W)/g, '$2');
// value: Lorem " ipsum ' dolorem \ javascript
person Cristian Traìna    schedule 03.11.2017

"ghda\'nja asda\\dasda dasj\' das\'da\\d as\\as\\sad".replace(/\'/g,"'")

Можете ли вы попробовать вышеуказанное и дайте мне знать. Он возвращает мне следующее:

"ghda'nja asda\dasda dasj' das'da\d as\as\sad"
person digitalis    schedule 03.11.2017