반응형
JS : 문자열의 경로에서 파일 이름을 제거하는 가장 최적화 된 방법은 무엇입니까?
다음과 같은 형식의 문자열이 있습니다. path/to/a/filename.txt
이제이 코드에서 "filename.txt"부분을 매우 효율적으로 제거 할 수 있도록 문자열 조작을 수행하고 싶습니다. 즉, 내 문자열이 다음과 같기를 바랍니다.path/to/a/
이를 수행하는 가장 효율적인 방법은 무엇입니까? 현재는 문자열을 분할하고 마지막 요소를 제외하고 분리 된 요소를 다시 연결하고 있지만 이것이 정말 비효율적 인 방법이라는 느낌을받습니다. 내 현재의 비효율적 인 코드는 다음과 같습니다.
res.getPath = function(file)
{
var elem = file.split("/");
var str = "";
for (var i = 0; i < elem.length-1; i++)
str += elem[i] + "/";
return str;
}
lastIndexOf ()를 사용하여 마지막 슬래시의 위치를 찾고 substring ()으로 슬래시 앞 부분을 가져옵니다.
str.substring(0, str.lastIndexOf("/"));
이것은 어떤가요:
"path/to/a/filename.txt".split("/").slice(0, -1).join("/")+"/"
function splitPath(path) {
var dirPart, filePart;
path.replace(/^(.*\/)?([^/]*)$/, function(_, dir, file) {
dirPart = dir; filePart = file;
});
return { dirPart: dirPart, filePart: filePart };
}
거기가 더 낫다
파일 업로드 양식의 파일 이름을 처리하는 경우 HTML5 사양은 다음 코드를 권장합니다.
function extractFilename(path) {
if (path.substr(0, 12) == "C:\\fakepath\\")
return path.substr(12); // modern browser
var x;
x = path.lastIndexOf('/');
if (x >= 0) // Unix-based path
return path.substr(x+1);
x = path.lastIndexOf('\\');
if (x >= 0) // Windows-based path
return path.substr(x+1);
return path; // just the filename
}
참조 :
http://www.w3.org/TR/html5/number-state.html#file-upload-state http://www.w3.org/TR/html5/forms.html#file-upload-state -(유형 = 파일)
function getDirname(pathname, separator) {
var parts = pathname.split(separator);
if (parts[parts.length - 1].indexOf('.') > -1) {
return parts.slice(0, -1).join(separator)
}
return pathname;
}
용법:
var dir = getDirname(url.parse(request.url).pathname, '/');
.
var dir = getDirname(path.join('foo', 'bar', 'text.txt'), path.sep);
test/dir/lib/file- _09.ege.jpg
- 될 것입니다 -test/dir/lib/
file- _09.ege.jpg
- 될 것입니다 -file- _09.ege.jpg
console.log("test - "+getPath('test/dir/lib/file- _09.ege.jpg'));
function getPath(path){
path = path.match(/(^.*[\\\/]|^[^\\\/].*)/i);
if(path != null){
return path[0];
}else{
return false;
}
}
console.log("test - "+getPath('test/dir/lib/file- _09.ege.jpg'));
function getPath(path){
path = path.match(/(^.*[\\\/]|^[^\\\/].*)/i);
if(path != null){
return path[0];
}else{
return false;
}
}
반응형
'programing' 카테고리의 다른 글
Django, ModelChoiceField () 및 초기 값 (0) | 2021.01.18 |
---|---|
ASP.NET MVC 양식 인증 + 특성 권한 부여 + 단순 역할 (0) | 2021.01.18 |
모든 쿼리 문자열 이름 / 값 쌍을 컬렉션으로 가져 오는 방법이 있습니까? (0) | 2021.01.18 |
C # 4.0 : 기본값이있는 선택적 매개 변수로 Color를 사용할 수 있습니까? (0) | 2021.01.18 |
Java : 배열의 하위 집합을 선택하는 쉬운 방법이 있습니까? (0) | 2021.01.18 |