12.12.2011, 18:43
|
Профессор
|
|
Регистрация: 24.03.2011
Сообщений: 217
|
|
Извлечь из ссылки число
Всем привет!
Помогите правильно извлечь число (выделено жирным) из ссылки:
http://site.ru/load/38-1-0-138
Дело в том, что можно было бы использовать рег. выражения. но в данном случае числа перед 138 могут быть любой длинны.
Как я понял, нужно как то записать в поиске, что происходит считывание числа после определенного " -".
Получается, но только наоборот. То есть вырезается 138, а остальное остается. Нужно сделать, что бы вырезалось все, кроме 138
var sa = 'http://site.ru/load/38-1-0-138';
sa.slice(0, -3);
Последний раз редактировалось Dorian_bs, 12.12.2011 в 18:49.
|
|
12.12.2011, 18:44
|
|
Профессор
|
|
Регистрация: 10.12.2011
Сообщений: 290
|
|
function lastNumber(_url, _word){
_word?_word=_word:_word = '-'
var start
for(var i=_url.length-1; i >= 0; i--){
if(_url[i] == _word){
start = i
break
}
}
return parseInt(_url.slice(start+1),10)
}
принимает ссылку, возвращает число после последнего знака " - "
вторым аргументом можно передавать символ после последнего которого брать число, если не передать, то по умолчанию этот символ равен знаку минус))
Последний раз редактировалось Livanderiaamarum, 12.12.2011 в 19:22.
|
|
12.12.2011, 19:16
|
|
junior
|
|
Регистрация: 29.11.2011
Сообщений: 3,924
|
|
\как понял
var x = "http://site.ru/load/38-1-0-138".split("-").pop();
alert(x);
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
|
|
12.12.2011, 19:21
|
|
Профессор
|
|
Регистрация: 10.12.2011
Сообщений: 290
|
|
Сообщение от nerv_
|
\как понял
var x = "http://site.ru/load/38-1-0-138".split("-").pop();
alert(x);
|
браво но мой метод быстрее
Последний раз редактировалось Livanderiaamarum, 12.12.2011 в 19:23.
|
|
12.12.2011, 19:48
|
Профессор
|
|
Регистрация: 24.03.2011
Сообщений: 217
|
|
Спасибо Вам большое))
|
|
12.12.2011, 19:48
|
|
Профессор
|
|
Регистрация: 06.05.2009
Сообщений: 1,163
|
|
Livanderiaamarum,
Ой, ну да ладно. А зачем то так было мудрить
_word?_word=_word:_word = '-'
Вот вам 2 варианта, куда попроще:
var word = arguments[1] || '-';
word = word || '-'
А вместо последней вашей кучи кода, нельзя было сделать так что ле:
var str = 'http://site.ru/load/38-1-0-138';
alert(str.slice(++str.lastIndexOf('-')));
И вообще, по хорошему одна регулярка решает все проблемы и там уже вытаскивай какой хочешь индекс
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
|
|
12.12.2011, 19:51
|
|
Профессор
|
|
Регистрация: 10.12.2011
Сообщений: 290
|
|
Сообщение от Nekromancer
|
Livanderiaamarum,
Ой, ну да ладно. А зачем то так было мудрить
_word?_word=_word:_word = '-'
Вот вам 2 варианта, куда попроще:
var word = arguments[1] || '-';
word = word || '-'
А вместо последней вашей кучи кода, нельзя было сделать так что ле:
var str = 'http://site.ru/load/38-1-0-138';
alert(str.slice(++str.lastIndexOf('-')));
И вообще, по хорошему одна регулярка решает все проблемы и там уже вытаскивай какой хочешь индекс
|
ахахахахахаа))) я забыл про существование lastIndexOf )))) пипец)!!
я даже щас подумал сделать какой нить такой метод))) спасибо что напомнили)
|
|
12.12.2011, 19:59
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Nekromancer, в фф ошибка, ибо инкремент не к переменной, а к числу)
Так:
str="http://site.ru/load/38-1-0-138";
alert(str.slice(str.lastIndexOf("-")+1));
|
|
12.12.2011, 20:07
|
|
Профессор
|
|
Регистрация: 06.05.2009
Сообщений: 1,163
|
|
trikadin,
Ты прав, да. Я с начала запустил с обычным сложением а потом поменял на инкремент.
Что то я совсем упустил, что он не возвращает значение, а изменяет исходное Попытка излишней оптимизации.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
|
|
12.12.2011, 21:07
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
Вариант...
var sa = 'http://site.ru/load/38-1-0-138';
alert(sa.match(/\d+$/))
|
|
|
|