2017-02-13 3 views
0

Я пытаюсь переименовать документ, я хочу удалить все содержимое после последнего '\', а затем дать ему другое имя.Удалить все содержимое после последнего '' не работает

Я сделал это так, но не кажется, что это будет работать:

var newDocName = documentPath.replace(/\/$/, ''); 
var newDocName = newDocName + "\test.pdf"; 

'\' не удаляются после первой строки кода.

Любая идея, что я делаю неправильно?

+2

Неправильный регулярное выражение. На данный момент он ищет строку, заканчивающуюся на '/', а затем конец строки. SO, если есть контент после последнего «/», он ничего не найдет. Вам нужно изменить его на \\ для обратной косой черты, а затем добавить некоторые кванторы, чтобы проверить, есть ли текст за последним \. Вы могли бы просто использовать indexOf для последней косой черты и фрагмента вместо этого вместо регулярного выражения. – Shilly

+0

Как вы достигаете локальной файловой системы с помощью браузера? ''? – zer00ne

ответ

4

/\/$/ означает, что вы хотите, чтобы соответствовать /, если это последний символ в строке значения этот код будет заменить самый последний /, если и только если он находится в конце строки.

Если вы хотите, чтобы удалить содержимое после последнего \, то вы можете использовать комбинацию split разбить строку на \ с затем использовать slice, чтобы получить все, кроме последнего элемента. Наконец, используйте join, чтобы вернуть их обратно.

var uri = 'path\\to\\my\\file.ext'; 
 
var parts = uri.split('\\'); 
 
var withoutFile = parts.slice(0, parts.length - 1); 
 
var putItBackTogether = withoutFile.join('\\'); 
 
var voila = putItBackTogether + '\\new-file.name'; 
 
console.log(voila);

+2

Только полный ответ до сих пор. Другие ответы забывают, что после последней обратной косой черты имя файла. – Shilly

+1

Отличный ответ, спасибо! – user3378165

1

Это косая черта, используйте \\ istead.

0

Попробуйте заменить его на:

var newDocName = documentPath.replace(/\\/$/, ''); 
0

Ваш REGEX имеет плохой формат: вы должны избежать ваши обратные кавычки (\).

Так что может быть:

var newDocName = documentPath.replace(/[\\/]$/, ''); 
var newDocName = newDocName + "\\test.pdf"; 

Это регулярное выражение будет искать \ или / в конце ($) от вас пути. Вы можете использовать regex101 для проверки ваших регулярных выражений.

Вы должны также рассмотреть не с помощью регулярных выражений, когда вы их не нужно:

var newDocName = documentPath[documentPath.length - 1] == "\\" ? documentPath + "test.pdf" : documentPath + "\\test.pdf"; 
Смежные вопросы