2011-02-16 4 views
3

I가 다음과 같은 오류ColdFusion에서 문자열 :: 분할() 문제

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. 

이 왜 결과 다음 코드

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

? 이것은 컴파일시 발생하며 실행되지 않습니다.

답변

2

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> 

색인을보아야합니다. 아래의 자바 배열이 0 인 indexed이지만 coldfusion을 사용하면 1로 색인화됩니다.

+0

좋은 답변이지만 제 것도보십시오. CF9가이를 처리 할 수 ​​있습니다. –

3

CF 9에서는 함수 호출에서 직접 배열 결과로 액세스 할 수있는 기능이 추가되었습니다. 다음은 로컬 설치 9.0.1에서 예상대로 작동합니다.

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

덤프는이 예제에서 'this'를 표시합니다.

+1

split()에 대한 문서에 대한 링크를 게시 할 수 있습니까? 나는 힘든 시간을 보내고 있습니다. 감사합니다 ... – cfEngineers

+0

cfEngineers - Java 메소드입니다. http://download.oracle.com/javase/6/docs/api/java/lang/String.html#split(java.lang.String) – Mark