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