开发者

Coldfusion string::split() issue

开发者 https://www.devze.com 2023-02-10 17:42 出处:网络
I have the following code <cffunction name=\"getObjTag\" returnType=\"string\" output=\"false\">

I have the following code

<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>

Which results in the following error

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开发者_C百科 96, column 10.

Why is this? This happens on compile, not run.


CF 9 added the ability to access the results of the split as an array directly from the function call. The following works as expected on my local install of 9.0.1:

<cfset foo = "this is a string" />
<cfdump var="#foo.split(" ")[1]#" />

The dump shows 'this' in this example.


CF can't access the results of the split as an array directly from the function call. You need an intermediate variable.

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

You also need to watch your indexes. Although the java array underneath is 0 index'ed, using coldfusion to get at it makes it indexed by 1.

0

精彩评论

暂无评论...
验证码 换一张
取 消