поэтому я делаю простую функцию, которая разделяет имя файла и путь к каталогу. Я считаю, что есть более простой способ с модулем Path узла, но я подумал, что сделаю это сам для этого проекта.
поэтому проблема в том, что когда я пишу символ обратной косой черты в строке, я экранирую их в строке, например «directory\AnothaDirectory». Он запускается, но двойные "\" и "\\", используемые для выхода, все еще остаются в строках после их анализа. пример: "C:\\Documents\Newsletters".
Я пробовал использовать одиночные символы обратной косой черты, что, как и следовало ожидать, вызывает ошибки компилятора. но я также пытался использовать косую черту. что может быть причиной того, что обратная косая черта не экранируется?
function splitFileNameFromPath(path,slashType){
let pathArray = path.split(slashType),
fileName = pathArray[pathArray.length - 1],
elsIndexes = pathArray.length - 1,
pathSegs = pathArray.slice(0, elsIndexes);
let dirPath = pathSegs.join(slashType);
//adds an extra slash after drive name and colon e.g."C:\\"
dirPath = dirPath.replace( new RegExp("/\/","ug"), "\\" )
//removes illegal last slash
let pathSeg = pathSegs.slice(0,-1)
return [dirPath, fileName]
}
let res = splitFileNameFromPath("C:\\\\Documents\\Newsletters\\Summer2018.pdf","\\");
console.info(res)



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


В этом коде есть некоторые моменты, которые я не понимаю.
"C:\\\\Documents\\Newsletters\\Summer2018.pdf" (т. е. "C:\\Documents\Newsletters\Summer2018.pdf") не кажется допустимым путем Windows, поскольку после обычно используемой буквы диска нет двойных косых черт (это не похоже на URL-адрес 'https://...').
new RegExp("/\/","ug") равно ////gu и ничему не соответствует.
Результат let pathSeg = pathSegs.slice(0,-1) вообще не используется.
Мне кажется, что этого кода достаточно для решения задачи:
'use strict';
function splitFileNameFromPath(path, slashType) {
const pathArray = path.split(slashType),
fileName = pathArray.pop(),
dirPath = pathArray.join(slashType);
return [dirPath, fileName];
}
const path = "C:\\Documents\\Newsletters\\Summer2018.pdf";
const slash = "\\";
const res = splitFileNameFromPath(path, slash);
console.info(res);
console.info(path === res.join(slash));
\\ в строке и регулярном выражении - это одинарная косая черта \, потому что это escape-символ, и он экранирован. это просто ничего не делать
dirPath = dirPath.replace( new RegExp("/\/","ug"), "\\" ).