ColdFusion列表值替换

时间:2018-06-10 15:39:28

标签: coldfusion coldfusion-10

我在ColdFusion变量中有一组列表值,我需要将所有列表值替换为所需的文本。

例如:

<cfset headerColumnList = "FirstName,LastName,Email,FrequentGuestID,IP Address,Time Stamp Email Marketing">
<cfset a="test1">
<cfset b="test2">
<cfset c="test3">
<cfset d="test4">
<cfset e="test5">
<cfset f="test6">


<cfloop index = "ListElement" list= "#headerColumnList#" delimiters = ",">  
    <cfoutput>
    #replaceList("#ListElement#","FirstName,LastName,Email,FrequentGuestID,IP Address,Time Stamp Email Marketing","#a#,#b#,#c#,#d#,#e#,#f#",",")#
</cfoutput>
</cfloop>

Output:
test1
test2
test3
test4
test5
Time Stamp test3 Marketing

在上面的场景中。价值“时间戳电子邮件营销”应该被替换为“test6”,但我正在以另一种方式获得它不会将短语替换为整个单词。任何人都可以告诉我如何替换列表短语,任何替代方案?

2 个答案:

答案 0 :(得分:3)

在这里,您可以使用ListQualify函数来获取场景的准确结果。因此,将其转换为限定值并循环使​​用,然后您可以将其替换为您自己的列表数据。无需更改列表值的任何顺序。                                   

<cfset quoted = listQualify(headerColumnList,"''")>

<cfloop index = "ListElement" list= "#quoted#" delimiters = ",">  

    #replaceList(ListElement,quoted,"#a#,#b#,#c#,#d#,#e#,#f#")# 
    <br/>
</cfloop>

答案 1 :(得分:1)

代码按写入方式工作。你看到了这个,因为你检查了&#34;电子邮件&#34;在检查&#34;时间戳电子邮件营销&#34;之前,replaceList()功能正在触发。注意单词&#34; Email&#34;在那个字符串中。

我不知道您的实际用例是什么,但您可以更改此特定示例的代码顺序,以使其按预期工作。

<cfset headerColumnList = "FirstName,LastName,Email,FrequentGuestID,IP Address,Time Stamp Email Marketing">
<cfset a="test1">
<cfset b="test2">
<cfset c="test3">
<cfset d="test4">
<cfset e="test5">
<cfset f="test6">

<cfloop index = "ListElement" list= "#headerColumnList#" delimiters = ",">  
    <cfoutput>
    #replaceList("#ListElement#","FirstName,LastName,FrequentGuestID,IP Address,Time Stamp Email Marketing,Email","#a#,#b#,#d#,#e#,#f#,#c#",",")#
    </cfoutput>
</cfloop>

这给出了所需的输出。请注意我如何重新排序replaceList()函数中的条件。