如何将逗号分隔的字符串拆分为cfscript中的数组

时间:2011-09-06 17:00:04

标签: coldfusion

有没有一种简单的方法可以使用cfscript将逗号分隔的字符串拆分成数组?

类似于以下JavaScript的内容:

var a = "a,b,c".split(",");

2 个答案:

答案 0 :(得分:29)

var a = ListToArray("a,b,c,d,e,f");     

https://cfdocs.org/listtoarray

答案 1 :(得分:3)

你的两个主要选项是listToArray(myList)和java方法myList.split(),如前面的答案和评论中所述。有些事情需要注意。

  • 默认情况下,ColdFusion列表函数会忽略空列表项。
  • 从ColdFusion版本8开始,listToArray采用可选的第三个参数includeEmptyFields,这是一个控制该行为的布尔值,默认为false。

例如:

listToArray("asdf,,,qwer,tyui") is ["asdf", "qwer", "tyui"]
listToArray("asdf,,,qwer,tyui", ",", true) is ["asdf", "", "", "qwer", "tyui"]

重新分组:

与通过ColdFusion层发布的其他java功能一样,这是未记录的且不受支持的

在Adobe ColdFusion 8,9和10中,但在Railo中没有,这是语法错误:

a = "asdf,,,qwer,tyui".split(",")

但这有效:

s = "asdf,,,qwer,tyui";
a = s.split(",");

据我所知,Adobe ColdFusion将.split()的结果视为ColdFusion数组:

  • CFDumps将其显示为数组
  • 这是基于1的
  • 您可以在其上使用arrayLen
  • 您可以在ColdFusion中修改其元素
  • 可能还有其他我没有检查的行为与CF阵列不同,但如上所述,它不受支持

在Railo:

  • 调试转储将其显示为Native Array(java.lang.String [])
  • 关于其非常类似行为的其他陈述仍然是正确的

这与使用createObject(“java”,“java.util.ArrayList”)创建的真实java数组形成对比。
注意:这只是部分正确;请参阅下面的编辑。

  • 例如,在Adobe ColdFusion中,无法使用CFML直接修改java ArrayList的元素
  • 一般来说,Railo处理的Java数组更像是ColdFusion而不是ACF

编辑:感谢Leigh,我表示反对,我应该坚持我所知道的,这比CF方式更多。

我对评论的反应是说.split()的结果“不是ColdFusion数组,而是本机Java数组。你将无法通过CF修改它”,而实际情况并非如此。我的经验。我试图通过更具体的方式澄清这一点,但是他没有消息,也没有必要。