Как вызвать split (токен) для строки, которая не содержит токен, не вызывая ошибку? - PullRequest
0 голосов
/ 20 июля 2009

У меня есть два типа строк в качестве идентификаторов элементов в моей HTML-разметке:

Сроки:

"april-23"
"march-20"

и названия сезонов:

"springtime"
"winter"

Даты имеют тире, разделяющую месяц и день.

Времена года - это одно слово без других токенов.

Я хочу присвоить месяц или сезон новой переменной с именем:

time_of_year

Если я сделаю это:

var time_of_year = $(this).attr("id").split('-')[0];

Он будет работать по месяцам, но если я назову его по названию сезона, который не содержит токен, выдаст ли он ошибку?

Какой безопасный способ сделать это?

Ответы [ 3 ]

4 голосов
/ 20 июля 2009

Не возвращает ошибку, но возвращает массив длиной один.

Вы могли бы сделать что-то вроде этого:

var splitty = $(this).attr('id').split('-');
if (splitty.length > 1) {
   time_of_year = splitty[0];
}
else {
   // do something else magical here
}

Вот документы по split .

Но, если вы всегда хотите первое значение и не заботитесь о других, вы можете просто использовать свой оригинальный код без проблем:

var time_of_year = $(this).attr('id').split('-')[0]
3 голосов
/ 20 июля 2009

Вы можете проверить, существует ли символ дефиса, используя mystring.indexOf('-') (который вернет -1, если он не существует). Но я почти уверен, что если вы разделите строку на символ, который не содержит этот символ, он просто вернет исходную строку.

0 голосов
/ 20 июля 2009

Почему бы вам не добавить дефис перед выполнением разбиения? Вы все равно получаете первый элемент. Какая разница, если это первый из двух или первый из трех элементов?

var time_of_year = $ ((this) .attr ("id") + '- x'). Split ('-') [0];

Таким образом, вы берете предмет слева от первого дефиса, и всегда будет первый дефис:

"Апрель-23-х" "Весна-х"

(Обратите внимание, я не проверял это и не ставлю свою жизнь на синтаксис! Но, возможно, это будет свежей идеей для вас.)

Редактировать: Кстати, я думаю, что пример в Исходном сообщении будет работать в любом случае. Split должен вернуть список длиной 1, и вы захватываете [0] -ый элемент, что идеально.

...