How can I get file extensions with JavaScript?

后端 未结 30 2197
终归单人心
终归单人心 2020-11-22 09:37

See code:

var file1 = \"50.xsl\";
var file2 = \"30.doc\";
getFileExtension(file1); //returns xsl
getFileExtension(file2); //returns doc

function getFileExt         


        
30条回答
  •  醉梦人生
    2020-11-22 10:18

    Code

    /**
     * Extract file extension from URL.
     * @param {String} url
     * @returns {String} File extension or empty string if no extension is present.
     */
    var getFileExtension = function (url) {
        "use strict";
        if (url === null) {
            return "";
        }
        var index = url.lastIndexOf("/");
        if (index !== -1) {
            url = url.substring(index + 1); // Keep path without its segments
        }
        index = url.indexOf("?");
        if (index !== -1) {
            url = url.substring(0, index); // Remove query
        }
        index = url.indexOf("#");
        if (index !== -1) {
            url = url.substring(0, index); // Remove fragment
        }
        index = url.lastIndexOf(".");
        return index !== -1
            ? url.substring(index + 1) // Only keep file extension
            : ""; // No extension found
    };
    

    Test

    Notice that in the absence of a query, the fragment might still be present.

    "https://www.example.com:8080/segment1/segment2/page.html?foo=bar#fragment" --> "html"
    "https://www.example.com:8080/segment1/segment2/page.html#fragment"         --> "html"
    "https://www.example.com:8080/segment1/segment2/.htaccess?foo=bar#fragment" --> "htaccess"
    "https://www.example.com:8080/segment1/segment2/page?foo=bar#fragment"      --> ""
    "https://www.example.com:8080/segment1/segment2/?foo=bar#fragment"          --> ""
    ""                                                                          --> ""
    null                                                                        --> ""
    "a.b.c.d"                                                                   --> "d"
    ".a.b"                                                                      --> "b"
    ".a.b."                                                                     --> ""
    "a...b"                                                                     --> "b"
    "..."                                                                       --> ""
    

    JSLint

    0 Warnings.

提交回复
热议问题