замена обратной косой черты в тексте Unicode - PullRequest
0 голосов
/ 30 октября 2018

Мне тяжело пытаться заменить текст \_ на JS. Я пробовал различные комбинации с fromCharCode и split, но, похоже, не добился успеха.

Во всех этих случаях вывод идентичен вводу, я не могу вырвать или заменить ненужные символы. Кажется, что обратная косая черта невидима для JS. Хотите знать, связано ли это с юникодной строкой?

Предложения приветствуются!

let v1 = {
  s: "生病以后,爸爸\_什么\_酒\_都\_不\_能喝了"
}

let v2 = { ...v1 }  // copy
let v3 = { ...v2 }  // copy

v2.s = v2.s.replace(/\\/g, "X")
v3.s = v3.s.split(String.fromCharCode(92)).join("Y")

console.log("v1", v1)
console.log("v2", v2)
console.log("v3", v3)

В этот момент я могу связываться со сценарием sed;.;

связанные проверены не решить: Javascript и обратная косая черта заменяют Заменить косую черту (\) на косую черту (/) Преобразование обратной косой черты в прямую косую черту с использованием JavaScript не работает должным образом?

1 Ответ

0 голосов
/ 30 октября 2018

Когда вы присваиваете свою строку следующим образом:

let v1 = {
  s: "生病以后,爸爸\_什么\_酒\_都\_不\_能喝了"
}

Все обратные слэши будут удалены, и ваша строка результата будет 生病以后,爸爸_什么_酒_都_不_能喝了

Таким образом, вы также должны избежать этих обратных слеш:

let v1 = {
  s: "生病以后,爸爸\\_什么\\_酒\\_都\\_不\\_能喝了"
}

И теперь, чтобы достичь ожидаемого результата, вы можете использовать следующую замену регулярное выражение:

v1.s = v1.s.replace(/\\_/g, 'X');
...