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有很多细微的差异,这可能会让你绊倒。