2013-05-08 2 views
2

С помощью этого кода я получить полный путь исполняемого скрипта, в этом случае services.js:регулярное выражение, чтобы удалить имя файла из полного URL

JS

var scripts = document.getElementsByTagName("script"), 
src = scripts[scripts.length-1].src; 

alert(src); 

Выходной пример:

file:///C:/Users/fel/Desktop/currencies-gh-pages/js/services.js 

Но я хочу, выход, как это:

file:///C:/Users/fel/Desktop/currencies-gh-pages/js/ 

Есть идеи?

+0

езультаты ce test здесь -> http://jsperf.com/replace-speed-test – plalx

ответ

3

Я думаю, вы могли бы разбить его.

src = src.split('/'); 
src.pop(); 
alert(src.join('/')); 
+1

'' регулярное выражение для удаления имени файла из полного URL-адреса ", я не вижу никакого регулярного выражения в этом = P – plalx

+2

@plalx - почему бы вам использовать регулярное выражение, когда вам этого не нужно? – adeneo

+0

здесь предлагается множество решений :). Я стараюсь быть как можно быстрее. Может даже использовать 'src.split ('/'). Slice (0, -1) .join ('/')' – Ven

1

«регулярное выражение, чтобы удалить имя файла из полного URL»

Вы могли бы заменить все символы, которые ARENT / в конце строки, используя следующее регулярное выражение /[^\/]+$/.

src.replace(/[^\/]+$/, ''); 

Однако, как представляется, тем медленнее решение по сравнению с некоторыми другими решениями: http://jsperf.com/replace-speed-test

1

Вы можете использовать http://phpjs.org/functions/dirname/

var txt = 'file:///C:/Users/fel/Desktop/currencies-gh-pages/js/services.js'; 

function dirname (path) { 
    // http://kevin.vanzonneveld.net 
    // + original by: Ozh 
    // + improved by: XoraX (http://www.xorax.info) 
    // *  example 1: dirname('/etc/passwd'); 
    // *  returns 1: '/etc' 
    // *  example 2: dirname('c:/Temp/x'); 
    // *  returns 2: 'c:/Temp' 
    // *  example 3: dirname('/dir/test/'); 
    // *  returns 3: '/dir' 
    return path.replace(/\\/g, '/').replace(/\/[^\/]*\/?$/, ''); 
} 

alert(dirname(txt)); 
Смежные вопросы