Se você precisar processar uma variável que contenha o caminho completo (ex .:) thePath = "http://stackoverflow.com/directory/subdirectory/filename.jpg"
e desejar retornar apenas "nome do arquivo", poderá usar:
theName = thePath.split("/").slice(-1).join().split(".").shift();
o resultado será theName == "filename" ;
Para tentar, escreva o seguinte comando na janela do console do seu depurador chrome:
window.location.pathname.split("/").slice(-1).join().split(".").shift()
Se você precisar processar apenas o nome do arquivo e sua extensão (ex .:) theNameWithExt = "filename.jpg"
:
theName = theNameWithExt.split(".").shift();
o resultado será theName == "filename" , o mesmo que acima;
Notas:
- O primeiro é um pouco mais lento, porque realiza mais operações; mas funciona nos dois casos, ou seja, pode extrair o nome do arquivo sem extensão de uma determinada sequência que contém um caminho ou um nome de arquivo com ex. Enquanto o segundo funciona apenas se a variável especificada contém um nome de arquivo com ext como filename.ext, mas é um pouco mais rápido.
- Ambas as soluções funcionam para arquivos locais e do servidor;
Mas não posso dizer nada sobre a comparação de desempenhos com outras respostas, nem sobre a compatibilidade do navegador ou do SO.
trecho de trabalho 1: o caminho completo
var thePath = "http://stackoverflow.com/directory/subdirectory/filename.jpg";
theName = thePath.split("/").slice(-1).join().split(".").shift();
alert(theName);
trecho de trabalho 2: o nome do arquivo com extensão
var theNameWithExt = "filename.jpg";
theName = theNameWithExt.split("/").slice(-1).join().split(".").shift();
alert(theName);
trecho de trabalho 2: o nome do arquivo com extensão dupla
var theNameWithExt = "filename.tar.gz";
theName = theNameWithExt.split("/").slice(-1).join().split(".").shift();
alert(theName);