Coldfusion ListToArray并使用"=="作为分隔符

Joh*_*ohn 2 coldfusion coldfusion-9

代码:

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

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

是否有其他人遇到此行为或可以解释发生了什么?

Pet*_*ton 10

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

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

Temp.split('==')
Run Code Online (Sandbox Code Playgroud)

(这是利用底层的Java string.split方法,它在指定正则表达式的每次匹配时拆分字符串,并且适用于所有基于Java的CFML引擎,但会产生Java字符串数组 - 无法直接操作使用CF的ArrayAppend和相关函数,除非它首先被转换.).

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

ListToArray(Temp,'==',false,true)
Run Code Online (Sandbox Code Playgroud)