如何在Coldfusion中为cfloop制作多字符分隔符?

时间:2010-01-27 15:20:27

标签: string coldfusion

我有一个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有没有办法做到这一点?

谢谢

3 个答案:

答案 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)

请改用.split()功能。

例如,您可以按字符串分隔符拆分字符串,如下所示:

 "string&^&string&^&string".split("&^&")

答案 2 :(得分:0)

不使用内置List*()功能,没有。它们都将delimiter参数视为一组字符,而不是文字字符串。但是,您当然可以使用常规字符串函数(例如Find()Mid()等)来自行解析。

另外,对于它的价值,你的循环可以更紧凑地编写(只要你不关心每个列表项的数字索引):

<cfloop index="i" list="#setPars#">
   <br/> #i#
</cfloop>