编码:
<cfset LOCAL.temp = 'something==a descript >= ive value' />
<cfdump var="#ListToArray(LOCAL.temp, '==')#" />
我期望的是一个具有两个索引的数组,我得到的是一个具有三个索引的数组,CF 也在单个等号处拆分。
是否有其他人遇到这种行为或可以解释发生了什么?
编码:
<cfset LOCAL.temp = 'something==a descript >= ive value' />
<cfdump var="#ListToArray(LOCAL.temp, '==')#" />
我期望的是一个具有两个索引的数组,我得到的是一个具有三个索引的数组,CF 也在单个等号处拆分。
是否有其他人遇到这种行为或可以解释发生了什么?
这是预期的行为。如文档中所述,ListToArray使用单字符分隔符(默认情况下)。
一种解决方案是使用拆分:
Temp.split('==')
(这是利用底层 Java string.split方法,该方法在指定正则表达式的每次匹配时拆分一个字符串,并且适用于所有基于 Java 的 CFML 引擎,但会生成一个 Java 字符串数组 - 不能直接操作用 CF 的 ArrayAppend 和相关函数,除非是先转换的。)。
由于您使用的是 CF9,因此您还可以通过将第四个参数设置为 true 来使用新的多字符分隔符标志:
ListToArray(Temp,'==',false,true)