Coldfusion ListToArray和using==&引用;作为分隔符

Coldfusion ListToArray和using==&引用;作为分隔符,coldfusion,coldfusion-9,Coldfusion,Coldfusion 9,守则: <cfset LOCAL.temp = 'something==a descript >= ive value' /> <cfdump var="#ListToArray(LOCAL.temp, '==')#" /> 我期望的是一个有两个索引的数组,我得到的是一个有三个索引的数组,CF也在一个等号处分裂 是否有其他人经历过这种行为,或者可以解释发生了什么?这是预期的行为。如文档中所述,使用单字符分隔符(默认情况下) 一种解决方案是使用拆分: Temp.

守则:

<cfset LOCAL.temp = 'something==a descript >= ive value' />
<cfdump var="#ListToArray(LOCAL.temp, '==')#" />

我期望的是一个有两个索引的数组,我得到的是一个有三个索引的数组,CF也在一个等号处分裂


是否有其他人经历过这种行为,或者可以解释发生了什么?

这是预期的行为。如文档中所述,使用单字符分隔符(默认情况下)

一种解决方案是使用拆分:

Temp.split('==')
(这是利用底层Java方法,该方法在指定正则表达式的每个匹配处分割字符串,并在所有基于Java的CFML引擎上工作,但会生成一个Java字符串数组——除非首先使用CF的ArrayAppend和相关函数,否则无法直接操作该数组。)

由于您使用的是CF9,您还可以通过将第四个参数设置为true来使用新的多字符分隔符标志:

ListToArray(Temp,'==',false,true)

... 这就是我没有阅读文档所得到的,谢谢!仅供参考,
split()
的一个细微差别是它返回一个不可变的数组。在旧版本上需要注意的是。Leigh,你能澄清一下什么时候适用吗?CF9上的string.split会生成一个可修改的数组,表明这是CF7的问题,所以CF8会受到影响吗?Peter-我在CF10下得到同样的结果。AFAIK适用于所有版本
String.split()。与列表不同,java数组是不可变的,因此它不能与
arrayAppend
等函数一起使用。(编辑)你需要做一些额外的工作,就像Ben的文章一样。啊,我误解了-修改值是有效的,修改数组本身就是问题所在。