Coldfusion string :: split()问题

我有以下代码

<cffunction name="getObjTag" returnType="string" output="false">
    <cfargument name="obj" Type="string" required="true">
    <cfargument name="tagname" Type="string" required="true">
    <cfreturn obj.split("<" & tagname.toUpperCase() & ">")[2]>
</cffunction>

导致以下错误

Invalid CFML construct found on line 96 at column 63.

ColdFusion was looking at the following text:

[

The CFML compiler was processing:

A cfreturn tag beginning on line 96, column 10.
A cfreturn tag beginning on line 96, column 10.

为什么是这样?这发生在编译时,而不是运行时.

最佳答案
CF无法直接从函数调用中以数组形式访问拆分结果.您需要一个中间变量.

<cfset var tmpArray = arrayNew(1)/>
<cfset tmpArray = arguments.obj.split("<" & arguments.tagname.toUpperCase() & ">")/>
<cfif arrayLen(tmpArray) gt 1>
   <cfreturn tmpArray[2]/>
<cfelse>
   <cfreturn ""/>
</cfif>

您还需要注意索引.尽管下面的java数组被索引为0,但是使用ColdFusion对其进行索引使索引为1.

转载注明原文:Coldfusion string :: split()问题 - 代码日志