其实很多寻址需求里面都会有这样的api设计
举例:
"a.js" ===> "./"
"a/b.js" ===> "a/"
"a/b/c.js" ===> "a/b/"
http://jsperf.com/regex-vs-split/2 这篇test case里面探究了3种方式,有正则也有string本身的split等实现。
//最快的也是seajs采用的 function dirname(path){ var s = path.match(/.*(?=\/.*$)/); return (s ? s[0] : '.') + '/'; }
贴一下其他的两种吧
function dirname(path){ var s = path.split('/').slice(0,-1).join('/'); return s ? s : '.'; }
function dirname(path){ var s = ('./' + path).replace(/(.*)?\/.*/, '$1').substring(2); return s ? s : '.'; }