Need a basename function in Javascript

后端 未结 19 1948
野性不改
野性不改 2020-11-29 02:44

I need a short basename function (one-liner ?) for Javascript:

basename(\"/a/folder/file.a.ext\") -> \"file.a\"
basename(\"/a/folder/file.ext\") -> \"f         


        
相关标签:
19条回答
  • 2020-11-29 03:07
    function baseName(str)
    {
       var base = new String(str).substring(str.lastIndexOf('/') + 1); 
        if(base.lastIndexOf(".") != -1)       
            base = base.substring(0, base.lastIndexOf("."));
       return base;
    }
    

    If you can have both / and \ as separators, you have to change the code to add one more line

    0 讨论(0)
  • 2020-11-29 03:08

    Using modern (2020) js code:

    function basename (path) {
      return path.substring(path.lastIndexOf('/') + 1)
    }
    console.log(basename('/home/user/file.txt'))

    0 讨论(0)
  • 2020-11-29 03:08

    Fairly simple using regex:

    function basename(input) {
       return input.split(/\.[^.]+$/)[0];
    }
    

    Explanation:

    Matches a single dot character, followed by any character except a dot ([^.]), one or more times (+), tied to the end of the string ($).

    It then splits the string based on this matching criteria, and returns the first result (ie everything before the match).

    [EDIT] D'oh. Misread the question -- he wants to strip off the path as well. Oh well, this answers half the question anyway.

    0 讨论(0)
  • 2020-11-29 03:08

    if your original string or text file contains single backslash character, you could locate it by using '\'. in my circumstance, i am using javascript to find the index of "\N" from a text file. and str.indexOf('\N'); helped me locate the \N from the original string which is read from the source file. hope it helps.

    0 讨论(0)
  • 2020-11-29 03:10
     basename = function(path) {
        return path.replace(/.*\/|\.[^.]*$/g, '');
     }
    

    replace anything that ends with a slash .*\/ or dot - some non-dots - end \.[^.]*$ with nothing

    0 讨论(0)
  • 2020-11-29 03:11
    my_basename('http://www.example.com/dir/file.php?param1=blabla#cprod',   '/',  '?');
    // returns:  file.php
    


    CODE:

    function my_basename(str, DirSeparator, FileSeparator) { var x= str.split(DirSeparator); return x[x.length-1].split(FileSeparator)[0];}
    
    0 讨论(0)
提交回复
热议问题