У меня есть Строковая переменная, которая имеет динамический вводимый пользователем текст
EX:- <cfset setPars="SPTO_DATE('04/11/2009 11:59:59 PM', 'MM/DD/YYYY HH:MI:SS AM')SP(L','MN)>'
Теперь, Если я использую SP
как разделитель
в CFloop как ниже
<cfloop index="i" from="1" To="#ListLen(setPars,'SP')#">
<br/> #ListGetAT(setPars,i,'SP')#
</cfloop>
Я становлюсь произведенным Как
TO_DATE('04/11/2009 11:59:59
M', 'MM/DD/YYYY HH:MI:
Но я хочу как
TO_DATE('04/11/2009 11:59:59 PM', 'MM/DD/YYYY HH:MI:SS AM')
(L','MN)
Есть ли какой-либо путь в Coldfusion, чтобы сделать это?
Спасибо
Не существует прямого способа сделать это. Тем не менее, есть пара разных способов достичь ее.
То, что я обычно делаю, это заменить разделитель MulticArarArce с одним символом. Я обычно использую колокол (Chr (7)), потому что он не типируется на стандартной клавиатуре.
<cfset list = replace(setPars, 'SP', '#chr(7)#', 'all')>
Затем вы можете включить в список:
<cfloop list="#list#" index="i" delimiters="#chr(7)#">
<br />#i#
</cfloop>
обратите внимание на более простой оператор петли. Это сэкономит вам некоторую работу.
Не используя встроенные функции List*()
, нет. Все они рассматривают аргумент разделителя как набор символов, а не как литературную строку. Но вы, конечно, можете использовать обычные строковые функции (например, Find()
, Mid()
и т.д.) для самостоятельного разбора.
Также, для удобства, цикл можно записать более компактно (если вас не волнуют числовые индексы каждого элемента списка) как:
<cfloop index="i" list="#setPars#">
<br/> #i#
</cfloop>