programing

JS : 문자열의 경로에서 파일 이름을 제거하는 가장 최적화 된 방법은 무엇입니까?

minecode 2021. 1. 18. 07:50
반응형

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;
            }            
        }

참조 URL : https://stackoverflow.com/questions/2187256/js-most-optimized-way-to-remove-a-filename-from-a-path-in-a-string

반응형