Coldfusion string :: split () проблема - PullRequest
3 голосов
/ 16 февраля 2011

У меня есть следующий код

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

Почему это? Это происходит при компиляции, а не при запуске.

Ответы [ 2 ]

3 голосов
/ 17 февраля 2011

CF 9 добавлена ​​возможность доступа к результатам разделения в виде массива непосредственно из вызова функции. Следующее работает как положено на моей локальной установке 9.0.1:

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

В этом примере дамп показывает 'this'.

2 голосов
/ 16 февраля 2011

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...