Как вставить backsla sh в строку с помощью регулярных или строковых функций для извлечения подстрок после \ in JavaScript? - PullRequest
0 голосов
/ 07 мая 2020

У меня есть следующие строки:

school\boy
school\class
school\playground
school\teacher
school\subject

Я хочу извлечь подстроку после \, т.е. boy, class, playground, teacher, subject. Кроме того, school остается постоянной подстрокой для всех строк.

Я знаю, что решение состоит в добавлении дополнительной backsla sh, например school\\boy, school\\teacher et c. поскольку он обрабатывает \b, \t как один специальный символ, но приведенные выше данные поступают из службы back-end, поэтому решение добавить дополнительный backsla sh вручную для каждой строки невозможно.

Мой вопрос в том, как я могу вставить этот дополнительный \ backsla sh через строковые функции или регулярное выражение и извлечь подстроки после \?

Я пробовал это сделать:

var str = "school\boy";
var newstr = str.slice(0,6) + '\\' + str.slice(6); \\ newstr = school\\boy
console.log(newstr.split('\\\\')[1]);

, но это дает undefined. Если я делаю разбиение на один backsla sh, он дает результат как \boy, что неверно. Я не понимаю, почему split не работает. Он по-прежнему обрабатывает \b как специальный символ даже после добавления в строку дополнительного символа \ после 'l'.

1 Ответ

1 голос
/ 07 мая 2020

Я предполагаю, что ваша серверная часть генерирует код JavaScript (только с одним backsla sh). Лучше всего перенастроить серверную часть.

Вы также можете использовать fetch() для выполнения запроса GET для получения строки, экранирование которой не требуется .

Однако, если по какой-то причине вы не можете этого сделать, вы можете использовать String.raw():

const str = String.raw `school\boy`; // Yes, without parenthesis.
console.log(str.split("\\")[1])

Но если вы используете String.raw(), убедитесь, что есть что-то после backslha sh, так как \` будет не завершать строку!

...