2010-10-02 3 views
4

У меня есть переменная, которая содержит относительную ссылку для изображения. Это имя файла изображения может иметь разную длину. Например ...strip filename из ссылки изображения

/v/vspfiles/assets/images/d-amazingamethyst.jpg 
/v/vspfiles/assets/images/cdacarbon.jpg 

Я хотел бы извлечь из этой переменной только имя файла с вне .jpg и расширением без пути предшествующему. Таким образом, первый пример выше должен возвращать d-amazingamethyst

Ответ JQuery предпочтительнее, но прямой javascript также в порядке. Благодаря

ответ

2

Methods on jsFiddle

Это возвращает «file-only.my»

var x = "/v/whatever/file-only.my.jpg"; 
x = x.substring(x.lastIndexOf("/")+1, x.lastIndexOf(".")); 

Он собирается получить подстроку, начиная с индекса последнего / плюс 1 (самого начало имени файла) до последнего индекса ., разрезая удлинение.

Вы также можете использовать функцию split.

var x = "/v/whatever/file-only.my.jpg"; 
x = x.split("/"); 
x = x[x.length-1].split('.'); 
x.pop(); 
x.join("."); 

Но тогда вам нужно обрабатывать . с на имя файла, если вы режете индексом 0 будет получить неверное имя файла.

Я использую .pop, чтобы удалить последний элемент массива, который будет расширением файла, затем я присоединяюсь ко всему обратно с ..

+0

Я использовал первый пример, сработал и кажется относительно прямым. Не нужно усложнять ситуацию. Спасибо за Ваш ответ!!! – user357034

+0

@ user357034: Рад, что я мог бы помочь. :) – BrunoLM

+0

Обманчиво простой ответ, +1 (хотя +1 был частично заработал только * не * с использованием регулярного выражения. Я, от души, пристрастен к таким инструментам) =) –

1
 
var v = "/v/vspfiles/assets/images/d-amazingamethyst.jpg"; 

var s = v.split("/"); 

var filename = s[s.length-1].split('.')[0]; 

alert(filename); 

Сначала я разделил строку на массив с делителем «/». Это дает последний элемент как имя файла. Снова я разделил последний элемент как имя файла на основе "."

вот скрипка для этого. http://www.jsfiddle.net/RFgRN/

1

Ссылка на Regular expression field validation in jQuery использует вариант ответа Хьюговара.

var phrase = "/v/vspfiles/assets/images/d-amazingamethyst.jpg"; 
var reg = new RegExp("\/\S+\/",i); 
phrase = phrase.replace(reg, ""); 
alert(phrase); 

Есть и другие способы, а не использование регулярного выражения, но удивительно, насколько полезным может быть регулярное выражение. Всегда хорошее умение иметь в своем арсенале. Я всегда проверяю свои регулярные выражения с помощью онлайн-инструментов проверки. Вот один пример: http://www.regular-expressions.info/javascriptexample.html

+0

Пока я согласен с вами в том, что решение reg exp всегда полезно, чтобы он делал головокружение, lol, спасибо за инструмент! – user357034

Смежные вопросы