2013-05-16 4 views
0

Разметка выглядит следующим образом ....JQuery - Удаление текста из строки

<img id="holder" src="http://www.domain.com/images/title.size.jpg"> 

Мой JQuery выглядит следующим образом ....

var image = jQuery('img#holder').attr('src'); 

я получить вернулся http://www.domain.com/images/title.size.jpg, но на самом деле я просто хочу http://www.domain.com/images/title.jpg. Мой вопрос ... Какой лучший способ удалить все из периодов только в имени файла (и один период), поэтому я остался с http://www.domain.com/images/title.jpg?

Рекомендация: Просто нужна JS, которая проверяет, существует ли более чем один период после последней косой черты, и если да, то находит положение первого периода после косой черты и положение последнего периода и удаляет кусок в середине.

+1

[String.Replace] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/replace) и [другие методы String] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/prototype#Methods) - это вопрос JavaScript, а не вопрос jQuery. – Blazemonger

+1

это неверно .. 'jQuery ('# holder img'). Attr ('src');' .. Интересно, как вы получаете результат ... это должно быть 'jQuery ('# holder'). Attr (' src '); ' – bipen

+1

работает ли ваш jQuery? вы ищете '#holder img'. Это должно быть 'img # holder' – karthikr

ответ

2

Я думаю, size - это число, а не строка. Если это так, используйте этот код:

var image = jQuery('img#holder').attr('src'); 
image = image.replace(/\.([0-9]+\.)/, '.'); 

С помощью этого кода www.example.com/image.640.jpg становится www.example.com/image.jpg.

Если размер имеет синтаксис как 640x480 использования (обратите внимание на «х»):

image = image.replace(/\.([0-9x]+\.)/, '.'); 
+0

Что делать, если это 640x480? –

+0

@ColinDeClue Обновлено. – Broxzier

+0

В его вопросе говорится о том, что после последнего коса есть более одного периода, и если да, то находит положение первого периода после косой черты и положение последнего периода и удаляет кусок посередине. не думайте, что правильно считать формат 'size' между периодами - это число или что-то конкретное. Вы должны просто сделать учетную запись регулярного выражения для чего-либо между периодами. – aug

1
function removebetweendots(str) 
{ 
    var arr = str.split("/"); 
    var filename = arr[arr.length-1]; 
    var n = filename.split(".").length; 
    var newfilename; 
    if(n>2) 
     newfilename = filename.split(".")[0] +"."+ filename.split(".")[n-1]; 
    else 
     newfilename = filename; 
    arr[arr.length-1] = newfilename; 
    return arr.join("/"); 
} 

removebetweendots("http://www.domain.com/images/title.size.jpg"); 
// returns .. "http://www.domain.com/images/title.jpg" 

removebetweendots("http://www.domain.com/images/title.size.moredata.jpg"); 
// returns .. "http://www.domain.com/images/title.jpg" 
+0

Путь слишком много кода для чего-то такого маленького, в моем опере. – Broxzier

+0

Убедитесь, что ваша функция принимает параметр str. По какой-то причине я не могу его редактировать. – aug

+1

да исправил его. –

0

Ответ использовать регулярное, выражение.

var getSize = new RegExp({},""); 

{} должно быть любым, что вы хотите совместить. Я не знаю, будет ли это .size. каждый раз или число.

0
url = jQuery('img#holder').attr('src'); //the image url 
url_parts = url.split('/'); //parts of url broken by '/'  
extensions = url_parts.pop().split('.'); //extensions in url (last elements in url_parts broken by '.') 

if(extensions.length > 2) //if more than two extensions 
    url = url_parts.join('/')+'/'+extensions[0]+'.'+extensions.pop() //replace url by joined non extension parts of orignal url, /, first and last extension 

alert("My filtered url: "+url) 

Работа http://jsfiddle.net/5jLbs/

+1

Мне нравится это решение, и оно отлично работает. Благодаря! – user2391113

+0

@ user2391113 thnx..если вы думаете, что ваш вопрос разрешен, отметьте этот ответ, принятый ..http: //meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work –

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