function basename(path, suffix) { // Returns filename component of path
//
// + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + improved by: Ash Searle (http://hexmen.com/blog/)
// + improved by: Lincoln Ramsay
// + improved by: djmix
var b = path.replace(/^.*[\/\\]/g, '');
if (typeof(suffix) == 'string' && b.substr(b.length-suffix.length) == suffix) {
b = b.substr(0, b.length-suffix.length);
}
return b;
}
Предлагаю следующею функцию, если Ваша задача не состоит в том чтобы удалить суфикс и/или путь содержит только слеш (/):
function basename( path ) { parts = path.split( '/' ); return parts[parts.length-1]; }Лишние переменные не нужны там в вашем случае...
function basename(path,prefix) {
path=path.split(prefix);
return path[path.length-1];
}
Совмещённый вариант учитывающий виндовые слэши и суфикс (расширение):
function basename(path, suffix){ let p = path.split( /[\/\\]/ ), name = p[p.length-1]; return ('string'!=typeof suffix) ? name : name.replace(new RegExp(suffix.replace('.', '\\.')+'$'),''); }Примеры:
basename('C:\\Program Files\\nodejs\\node.exe'); // 'node.exe'basename('C:\\Program Files\\nodejs\\node.exe', '.exe'); // 'node'basename('/etc/fstab'); // 'fstab'basename('.htaccess'); // '.htaccess'basename('file.txt','.txt'); // 'file'basename('file.txt','.t'); // 'file.txt'