我有一个String变量,其中包含动态用户输入的文本
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有没有办法做到这一点?
谢谢
答案 0 :(得分:11)
没有直接的方法可以做到这一点。但是,有几种不同的方法可以实现它。
我通常做的是用一个字符替换多字符分隔符。我通常使用铃声(chr(7)),因为它不适用于标准键盘。
<cfset list = replace(setPars, 'SP', '#chr(7)#', 'all')>
然后,您可以遍历列表:
<cfloop list="#list#" index="i" delimiters="#chr(7)#">
<br />#i#
</cfloop>
请注意更简单的循环运算符。它会为你节省一些工作。
答案 1 :(得分:2)
答案 2 :(得分:0)
不使用内置List*()
功能,没有。它们都将delimiter参数视为一组字符,而不是文字字符串。但是,您当然可以使用常规字符串函数(例如Find()
,Mid()
等)来自行解析。
另外,对于它的价值,你的循环可以更紧凑地编写(只要你不关心每个列表项的数字索引):
<cfloop index="i" list="#setPars#">
<br/> #i#
</cfloop>