Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Извлечь из ссылки число (https://javascript.ru/forum/misc/23941-izvlech-iz-ssylki-chislo.html)

Dorian_bs 12.12.2011 18:43

Извлечь из ссылки число
 
Всем привет!
Помогите правильно извлечь число (выделено жирным) из ссылки:

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);

Livanderiaamarum 12.12.2011 18:44

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)
}


принимает ссылку, возвращает число после последнего знака " - "

вторым аргументом можно передавать символ после последнего которого брать число, если не передать, то по умолчанию этот символ равен знаку минус))

nerv_ 12.12.2011 19:16

\как понял
var x = "http://site.ru/load/38-1-0-138".split("-").pop();
alert(x);

Livanderiaamarum 12.12.2011 19:21

Цитата:

Сообщение от nerv_ (Сообщение 142268)
\как понял
var x = "http://site.ru/load/38-1-0-138".split("-").pop();
alert(x);

браво:victory: но мой метод быстрее:)

Dorian_bs 12.12.2011 19:48

Спасибо Вам большое))

Nekromancer 12.12.2011 19:48

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('-')));

И вообще, по хорошему одна регулярка решает все проблемы и там уже вытаскивай какой хочешь индекс :)

Livanderiaamarum 12.12.2011 19:51

Цитата:

Сообщение от Nekromancer (Сообщение 142278)
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 )))) пипец)!!
я даже щас подумал сделать какой нить такой метод))) спасибо что напомнили)

trikadin 12.12.2011 19:59

Nekromancer, в фф ошибка, ибо инкремент не к переменной, а к числу)

Так:
str="http://site.ru/load/38-1-0-138";
alert(str.slice(str.lastIndexOf("-")+1));

Nekromancer 12.12.2011 20:07

trikadin,
Ты прав, да. Я с начала запустил с обычным сложением а потом поменял на инкремент.
Что то я совсем упустил, что он не возвращает значение, а изменяет исходное :) Попытка излишней оптимизации.

рони 12.12.2011 21:07

Вариант...
var sa = 'http://site.ru/load/38-1-0-138';
alert(sa.match(/\d+$/))


Часовой пояс GMT +3, время: 08:37.