2

编码:

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

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

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

4

1 回答 1

10

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

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

Temp.split('==')

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

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

ListToArray(Temp,'==',false,true)
于 2012-08-24T19:11:59.770 回答