Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.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 获取通过在ColdFusion 8中执行.split()创建的数组的第n项_Javascript_String_Coldfusion - Fatal编程技术网

Javascript 获取通过在ColdFusion 8中执行.split()创建的数组的第n项

Javascript 获取通过在ColdFusion 8中执行.split()创建的数组的第n项,javascript,string,coldfusion,Javascript,String,Coldfusion,好的,我知道执行以下操作将在上创建一个字符串拆分数组: <cfset theString = "get_the_point"> <cfset thePieces = theString.Split("_{1}")> 但是,如何只获取数组中的第三项,而不必创建一个新变量来计算数组,如: <cfset theThirdPiece = thePieces[3]> .Split()是否有我不知道的东西可以返回我正在寻找的特定项目?这必须非常简单,因为我在文

好的,我知道执行以下操作将在
上创建一个字符串拆分数组:

<cfset theString = "get_the_point">
<cfset thePieces = theString.Split("_{1}")>

但是,如何只获取数组中的第三项,而不必创建一个新变量来计算数组,如:

<cfset theThirdPiece = thePieces[3]>


.Split()
是否有我不知道的东西可以返回我正在寻找的特定项目?这必须非常简单,因为我在文档中没有找到任何东西。或者我找错了

如果使用下划线这样的简单分隔符,可以执行以下操作:

<cfset thePiece = listGetAt("get_the_point", 3, "_")>

所有列表函数都采用可选的分隔符参数,该参数是用作分隔符的单个字符列表


在尝试访问第n个位置之前,请记住检查列表的listLen()。

为了完成整个图片,我建议使用一种更简单/更简洁的方法来完成您需要的操作--如果您需要
最后一个
项:

<cfset thePiece = ListLast("get_the_point", "_") />

顺便说一句,查看accepter answer评论中与Java相关的讨论,我会注意到有一个用于拆分的本机函数:

<cfset theString = "get_the_point" />
<cfset thePieces = ListToArray(theString, "_") />


我想它在引擎盖下使用了相同的
分割

为了澄清它在语法上是正确的,我应该指出,您也可以这样做:

<cfset lastOne = theString.Split("_")[3] />


我相信这只适用于CF9+

Ben,谢谢。因此,本质上是不可以的,您不能使用
.split()
方法只获取数组之外的一个对象。这似乎是在cfc中处理问题的一种很好的优雅方式。从技术上讲,.split()方法是一种未记录的特性。因为ColdFusion字符串本质上是Java字符串,所以您可以使用该方法,但它不是一个真正的、有文档记录的ColdFusion功能。@Sean Coyne:很抱歉,我要挑您的毛病,但是ColdFusion to Java数据类型是有文档记录的:该页面列出了调用Java函数时它们是如何来回转换的。例如,如果我加载一个Java库,我知道我不必将ColdFusion字符串转换成Java字符串,因为ColdFusion会为我做这件事。相反的方向也会发生同样的情况。从Java返回的字符串将自动转换为CF字符串。将来,Adobe可能会对字符串使用另一个类,而该类可能没有该方法,并且该代码将中断。发生这种情况的可能性非常小,我已经在很多场合使用了.split(),但应该知道它没有文档记录。@orangepips尽管我认为转换不太可能改变(有几个原因),但一个寻呼机永远不会给我温暖而模糊的自信感。从逻辑上讲,我可以得出某些结论。但是,当谈到支持/不支持的话题时,我宁愿不诉诸推理。如果完全支持某些内部实现(未来版本、向后兼容性、技术支持等),则文档应明确说明,并详细列出支持的项。据我所知,他们现在可能会得到支持。但是文档索引中没有明确说明这一点,在我的测试中,当看到代码中的第一个
[
时,CF8抛出了一个错误“无效的CFML构造…”。下面是Ben Nadel关于使用split()的危险的有趣(但有点旧)帖子方法,因为它不创建ColdFusion数组。我在研究答案时遇到了它。因此,它在幕后显然是不同的…当你开始使用java的东西时,你会发现它与CF有很多细微的差异,这可能会让你绊倒。