如何呼吁不包含令牌不会导致错误的字符串分割(标记)?
-
18-09-2019 - |
题
我有两种类型的字符串作为元素的我的HTML标记的ID的:
日期:
"april-23"
"march-20"
和季节名称:
"springtime"
"winter"
的日期有一个短划线分隔月和日。
在季节是一个字,没有其他标记。
我要一个月或一季分配给一个所谓的新变量:
time_of_year
如果我这样做:
var time_of_year = $(this).attr("id").split('-')[0];
它完全可以在几个月内,但如果我把它叫做一个季节名不包含令牌,它会产生一个错误?
什么是做到这一点的安全方法?
解决方案
它不返回一个错误,但它确实有一个的长度返回的数组。
您可以做这样的事情:
var splitty = $(this).attr('id').split('-');
if (splitty.length > 1) {
time_of_year = splitty[0];
}
else {
// do something else magical here
}
下面是在分裂中的文档。
但是,如果你总是希望第一个值和不关心别人,你可以只使用原密码的W / O问题:
var time_of_year = $(this).attr('id').split('-')[0]
其他提示
您可以检查,看看是否连字符存在使用mystring.indexOf('-')
(这将返回-1,如果不存在的话)。但我敢肯定,如果拆分对字符的字符串不包含字符,它只是返回原始的字符串。
你为什么不加入之前执行拆分连字符?你是无论如何抓住了第一个元素。有什么区别,如果它是两个第一或前三个元素?
的变种time_of_year = $((本).attr( “ID”)+ ' - X')分裂( ' - ')[0];
您获取项目的第一个连字符的左侧这样,而且总是会有一个第一个连字符:
“四月-23-X” “春天-X”
(请注意,我没有测试这一点,我不是跑马圈地的语法我的生命!但也许它会成为你的新意。)
编辑:顺便说一下,我想在原岗位的例子无论如何都会正常工作。斯普利特应该返回长度为1的列表,而你抓住了[0]'个元素,这是完美的。
不隶属于 StackOverflow