Как я могу разбить строку на массив, используя оба «\\» или «/» в качестве разделителя (то есть в одном регулярном выражении) в Javascript? - PullRequest
2 голосов
/ 13 октября 2019

Я пытаюсь разбить любой произвольный путь к файлу, например:

"c:\\directory\\another_directory\\filename.ext" (ОС Windows)

ИЛИ

"c:/directory/another_directory/filename.ext"(UNIX)

в массив, разделенный либо "\\", либо "/" (в зависимости от операционной системы, в которой читаются строки filepath).

Требуемый выводмассив, такой как:

['c:', 'directory', 'another_directory', 'filename.txt']

Какое регулярное выражение я могу использовать в методе разбиения, например:

str.split(new RegExp(/(\\|/)/i)) (недопустимое регулярное выражение)

Заранее спасибо за помощь.

1 Ответ

3 голосов
/ 13 октября 2019

Используйте .match и сопоставляйте символы, которые не являются ни слешами, ни обратными слешами:

const doSplit = str => str.match(/[^/\\]+/g);

console.log(doSplit(String.raw`c:\\directory\\another_directory\\filename.ext`));
console.log(doSplit("c:/directory/another_directory/filename.ext"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...