#javascript
#javascript
Вопрос:
Я знаю о .split(«-«, 2), но как я могу сделать что-то подобное
var str = "123-341235";
alert( str.split( "-",2 ) . [2] )<--- to get second one (341235) value?
Спасибо за помощь всем!
Ответ №1:
Я вижу два простых решения, которые имеют примерно одинаковую производительность:
var str = "123-341235";
str.split('-')[1]; // => "341235" (slower)
str.slice(str.indexOf('-') 1); // => "341235" (faster)
Этот тест jsPerf показывает, что решение «slice / indexOf» примерно в два раза быстрее в Chrome и Firefox.
Обратите внимание, что для любого решения вам придется проверить, что символ hypen действительно существует, прежде чем извлекать вторую часть строки; Я бы поспорил, что добавление проверки все равно делает решение «slice / indexOf» намного быстрее.
Ответ №2:
Вам просто нужно опустить «.» (точка) и начать индекс вашего массива с 0:
str.split("-", 2)[1];
Комментарии:
1. Альтернатива:
str.split("-", 2).pop()
2. да, но это не очень эффективно: jsperf.com/split-vs-slice-indexof/4 🙂
Ответ №3:
Я обычно использую это:
str.split("-", 2).pop()
Ответ №4:
В одной строке:
alert('123-341235'.split('-',2 )[1]);
В двух вы могли бы догадаться:
var str = "123-341235";
alert( str.split('-',2)[1]) );
Массивы основаны на нуле, что означает, что первый элемент массива имеет индекс 0, второй индекс 1 и так далее. Кроме того, точка между массивом и значением индекса ( [i]
) генерирует ошибку.
Ответ №5:
Это должно сработать:
alert( str.split( "-",2 )[0] '/' str.split( "-",2 )[1]);
Комментарии:
1. $.log( $(значение) . attr( «uid») . split( «-«,2,1 ) [1] ); в основном то же самое. Спасибо вам!
Ответ №6:
var str = "123-341235";
alert( (str.split("-"))[1] );
- помните, что массивы основаны на нуле, поэтому вторым числом является индекс 1…
Ответ №7:
Самый быстрый, ИМХО
var str = "123-341235";
alert(str.substr(str.indexOf("-") 1));
Комментарии:
1. но теперь быстрее всего писать каждый раз 🙂
Ответ №8:
второй аргумент указывает split, сколько разбиений выполнить. Смотрите
http://www.w3schools.com/jsref/jsref_split.asp
сделать
var tokens = str.split("-");
tokens[0] // 123
tokens[1] // 341235
split возвращает массив результатов, и помните, что массивы основаны на 0, поэтому [0] — это первые результаты, а [1] — второй результат.
Ответ №9:
Вопрос JavaScript по SO никогда не бывает полным без некоторого излишества регулярных выражений :
var tokens = /^d -(d )$/.exec(str);
if (tokens) {
console.log(tokens[1]);
}
Оглядываясь назад, это позволяет выполнить проверку формата.
Комментарии:
1. Кто сказал, что это всегда будет оцифровано 🙂 лучше [^-] ?-.* на самом деле. Также это может быть в одной строке: токены =/…/?токены[1]: false; , как я понял 😉