Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在不包含令牌的字符串上调用拆分(令牌),而不会导致错误?_Javascript_Jquery_Stringtokenizer_String Parsing - Fatal编程技术网

Javascript 如何在不包含令牌的字符串上调用拆分(令牌),而不会导致错误?

Javascript 如何在不包含令牌的字符串上调用拆分(令牌),而不会导致错误?,javascript,jquery,stringtokenizer,string-parsing,Javascript,Jquery,Stringtokenizer,String Parsing,我有两种类型的字符串作为HTML标记中元素的ID: 日期: "april-23" "march-20" 季节名称: "springtime" "winter" 日期以破折号分隔月份和日期 季节是一个单词,没有其他标记 我想将月份或季节分配给一个名为: time_of_year 如果我这样做: var time_of_year = $(this).attr("id").split('-')[0]; 它将在几个月内工作,但如果我在不包含令牌的季节名称上调用它,它会生成错误吗 安全的方法是什么

我有两种类型的字符串作为HTML标记中元素的ID:

日期:

"april-23"
"march-20"
季节名称:

"springtime"
"winter"
日期以破折号分隔月份和日期

季节是一个单词,没有其他标记

我想将月份或季节分配给一个名为:

time_of_year
如果我这样做:

var time_of_year = $(this).attr("id").split('-')[0];
它将在几个月内工作,但如果我在不包含令牌的季节名称上调用它,它会生成错误吗


安全的方法是什么?

您可以使用mystring.indexOf'-'检查连字符是否存在,如果不存在,它将返回-1。但我很确定,如果在不包含该字符的字符上拆分字符串,它将只返回原始字符串。

它不会返回错误,但会返回长度为1的数组

你可以这样做:

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

但是,如果您总是想要第一个值,而不关心其他值,则可以使用原始代码,而不存在任何问题:

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

为什么不在执行拆分之前添加连字符?无论如何,您都在抓取第一个元素。如果是两个元素中的第一个或三个元素中的第一个,有什么区别

var time_of_year=$this.attrid+'-x'-split'-0]

这样,您将抓住第一个连字符左侧的项目,并且始终会有第一个连字符:

四月二十三日 春天-x

注意,我没有测试这个,也没有把我的生命押在语法上!但也许这对你来说是个新主意


编辑:顺便说一句,我认为原始文章中的例子无论如何都会奏效。Split应该返回一个长度为1的列表,并且您正在获取第[0]个元素,这是完美的

长度检查似乎完全没有必要$单独使用这个.attrid.split'-'[0]是安全的。@Ates我考虑过这个问题,但是如果没有split字符,OP似乎想做一些不同的事情。不过,我会用这个反馈更新答案。这是一种倒退的方式:普威尔,不可否认,正确的方式是阅读文档并理解.split是如何工作的。但有时谁有时间去做呢。所以,如果你担心一个错误,采取一个快速的预防措施,并向前迈进。减少人力劳动时间是一个有效的目标。假设有一个高中男生,对性不太了解,和一个辣妹坐在车后座。他担心他的手指会让女孩怀孕。他会停止一切并阅读关于性的文件吗?啊。你把安全套戴在手指上,然后继续前进。或者更好的是,你啊,真的