[javascript] JavaScript를 사용하여 전체 경로에서 파일 이름을 얻는 방법은 무엇입니까?

전체 경로에서 마지막 값 ( ‘\’기호 기준)을 얻을 수있는 방법이 있습니까?

예:

C:\Documents and Settings\img\recycled log.jpg

이 경우 recycled log.jpgJavaScript의 전체 경로에서 벗어나고 싶습니다 .



답변

var filename = fullPath.replace(/^.*[\\\/]/, '')

경로에서 \ OR /를 모두 처리합니다.


답변

성능을 위해 여기에 주어진 모든 대답을 테스트했습니다.

var substringTest = function (str) {
    return str.substring(str.lastIndexOf('/')+1);
}

var replaceTest = function (str) {
    return str.replace(/^.*(\\|\/|\:)/, '');
}

var execTest = function (str) {
    return /([^\\]+)$/.exec(str)[1];
}

var splitTest = function (str) {
    return str.split('\\').pop().split('/').pop();
}

substringTest took   0.09508600000000023ms
replaceTest   took   0.049203000000000004ms
execTest      took   0.04859899999999939ms
splitTest     took   0.02505500000000005ms

그리고 승자는 bobince 덕분에 Split and Pop 스타일 답변입니다 !


답변

Node.js에서 Path의 파싱 모듈을 사용할 수 있습니다 …

var path = require('path');
var file = '/home/user/dir/file.txt';

var filename = path.parse(file).base;
//=> 'file.txt'


답변

경로는 어떤 플랫폼에서 제공됩니까? Windows 경로는 POSIX 경로와 다릅니다. Mac OS 9와 다릅니다. 경로는 RISC OS 경로와 다릅니다 …

파일 이름이 다른 플랫폼에서 올 수있는 웹 응용 프로그램이라면 해결책이 없습니다. 그러나 합리적인 찌르기는 ‘\'(Windows) 및 ‘/'(Linux / Unix / Mac 및 Windows의 대안)을 경로 구분 기호로 사용하는 것입니다. 추가 재미를 위해 비 RegExp 버전이 있습니다.

var leafname= pathname.split('\\').pop().split('/').pop();


답변

Ates에서는 솔루션이 빈 문자열을 입력으로 보호하지 않습니다. 이 경우에는로 실패합니다 TypeError: /([^(\\|\/|\:)]+)$/.exec(fullPath) has no properties.

bobince, DOS, POSIX 및 HFS 경로 구분 기호 (및 빈 문자열)를 처리하는 nickf 버전이 있습니다.

return fullPath.replace(/^.*(\\|\/|\:)/, '');


답변

다음 JavaScript 코드 줄은 파일 이름을 제공합니다.

var z = location.pathname.substring(location.pathname.lastIndexOf('/')+1);
alert(z);


답변

nickf의 대답 보다 간결 하지는 않지만 원치 않는 부분을 빈 문자열로 바꾸는 대신 대답을 직접 “추출”합니다.

var filename = /([^\\]+)$/.exec(fullPath)[1];