Existe uma maneira de obter o último valor (com base no símbolo '\') de um caminho completo?
Exemplo:
C:\Documents and Settings\img\recycled log.jpg
Nesse caso, eu só quero ir recycled log.jpg
do caminho completo em JavaScript.
javascript
Jin Yong
fonte
fonte
replace
é muito mais lento que osubstr
que pode ser usado em conjunto comlastIndexOf('/')+1
: jsperf.com/replace-vs-substringFiddle
, embora para `\\` funcione bem."/var/drop/foo/boo/moo.js".replace(/^.*[\\\/]/, '')
retornosmoo.js
Apenas por uma questão de desempenho, testei todas as respostas dadas aqui:
E o vencedor é a resposta ao estilo Split e Pop , Obrigado a Bobince !
fonte
path.split(/.*[\/|\\]/)[1];
No Node.js, você pode usar o módulo de análise do Path ...
fonte
basename
função:path.basename(file)
De que plataforma vem o caminho? Os caminhos do Windows são diferentes dos POSIX e os caminhos do Mac OS 9 são diferentes dos caminhos do RISC OS são diferentes ...
Se for um aplicativo da Web em que o nome do arquivo possa vir de plataformas diferentes, não há uma solução. No entanto, uma facada razoável é usar '\' (Windows) e '/' (Linux / Unix / Mac e também uma alternativa no Windows) como separadores de caminho. Aqui está uma versão que não é RegExp para diversão extra:
fonte
var path = '\\Dir2\\Sub1\\SubSub1'; //path = '/Dir2/Sub1/SubSub1'; path = path.split('\\').length > 1 ? path.split('\\').slice(0, -1).join('\\') : path; path = path.split('/').length > 1 ? path.split('/').slice(0, -1).join('/') : path; console.log(path);
Ates, sua solução não protege contra uma string vazia como entrada. Nesse caso, ele falha com
TypeError: /([^(\\|\/|\:)]+)$/.exec(fullPath) has no properties
.bobince, aqui está uma versão do nickf que lida com delimitadores de caminho DOS, POSIX e HFS (e cadeias de caracteres vazias):
fonte
A seguinte linha de código JavaScript fornecerá o nome do arquivo.
fonte
Não é mais conciso do que a resposta de nickf , mas esta "extrai" diretamente a resposta em vez de substituir partes indesejadas por uma string vazia:
fonte
Uma pergunta que faz "obter nome do arquivo sem extensão" se refere aqui, mas não há solução para isso. Aqui está a solução modificada da solução de Bobbie.
fonte
Outro
Aqui, split tem uma expressão regular com uma classe de caracteres.
Os dois caracteres precisam ser escapados com '\'
Ou use a matriz para dividir
Seria o caminho para empurrar dinamicamente mais separadores em uma matriz, se necessário.
Se
fullPath
for explicitamente definido por uma string no seu código, ele precisará escapar da barra invertida !Gostar
"C:\\Documents and Settings\\img\\recycled log.jpg"
fonte
Eu uso:
Ele substitui o último
\
e também trabalha com pastas.fonte
fonte
A resposta completa é:
fonte
Pouca função a ser incluída no seu projeto para determinar o nome do arquivo a partir de um caminho completo para Windows, bem como dos caminhos absolutos do GNU / Linux e UNIX.
fonte
fonte
Script com êxito para sua pergunta, Teste completo
fonte
Essa solução é muito mais simples e genérica, tanto para 'nome do arquivo' quanto 'caminho'.
fonte
fonte
var file_name = file_path.substring(file_path.lastIndexOf('/'));
fonte