[javascript] JavaScript를 사용하여 전체 경로에서 파일 이름을 얻는 방법은 무엇입니까?
전체 경로에서 마지막 값 ( ‘\’기호 기준)을 얻을 수있는 방법이 있습니까?
예:
C:\Documents and Settings\img\recycled log.jpg
이 경우 recycled log.jpg
JavaScript의 전체 경로에서 벗어나고 싶습니다 .
답변
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];