ColdFusion列表值替换

ColdFusion列表值替换,coldfusion,coldfusion-10,Coldfusion,Coldfusion 10,我在ColdFusion变量中有一组列表值,需要将所有列表值替换为所需的文本 <cfset quoted = listQualify(headerColumnList,"''")> <cfloop index = "ListElement" list= "#quoted#" delimiters = ","> #replaceList(ListElement,quoted,"#a#,#b#,#c#,#d#,#e#,#f#")# <br/&g

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

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

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

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

<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
<cfset quoted = listQualify(headerColumnList,"''")>

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

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

#替换列表(“#列表元素”;“名、姓、电子邮件、常客、IP地址、时间戳电子邮件营销”;“#a#、#b#、#c#、#d#、#e#、#f#、”,)#
输出:
测试1
测试2
测试3
测试4
测试5
时间戳测试3营销

在上述场景中。“时间戳电子邮件营销”的价值应该被替换为“test6”,但我得到了另一种方式,它并没有取代整个词的短语。有人能告诉我如何替换列表中的短语吗?有什么替代方法吗?

代码正在按编写的方式工作。您之所以看到这种情况,是因为您在
replaceList()
函数中对“电子邮件”的检查在检查“时间戳电子邮件营销”之前启动。请注意该字符串中的单词“Email”

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

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

    #replaceList(ListElement,quoted,"#a#,#b#,#c#,#d#,#e#,#f#")# 
    <br/>
</cfloop>
我不知道您的实际用例是什么,但是您可以更改这个特定示例的代码顺序,使其按照您的需要工作

<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>
<cfset quoted = listQualify(headerColumnList,"''")>

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

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

#替换列表(“#ListElement#”、“名字、姓氏、常客、IP地址、时间戳电子邮件营销、电子邮件”、“#a#、#b#、#d#、#e#、#f#、#c#、”、“,”)#

这将提供所需的输出。请注意我是如何在
replaceList()
函数中对条件重新排序的。

代码按编写的方式工作。您之所以看到这种情况,是因为您在
replaceList()
函数中对“电子邮件”的检查在检查“时间戳电子邮件营销”之前启动。请注意该字符串中的单词“Email”

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

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

    #replaceList(ListElement,quoted,"#a#,#b#,#c#,#d#,#e#,#f#")# 
    <br/>
</cfloop>
我不知道您的实际用例是什么,但是您可以更改这个特定示例的代码顺序,使其按照您的需要工作

<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>
<cfset quoted = listQualify(headerColumnList,"''")>

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

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

#替换列表(“#ListElement#”、“名字、姓氏、常客、IP地址、时间戳电子邮件营销、电子邮件”、“#a#、#b#、#d#、#e#、#f#、#c#、”、“,”)#

这将提供所需的输出。请注意我是如何在
replaceList()
函数中对条件进行重新排序的。

在这里,您可以使用ListQualife函数获得场景的精确结果。因此,将其转换为限定值并循环使用,然后您可以用自己的列表数据替换它。无需更改列表值的任何顺序。
<cfset quoted = listQualify(headerColumnList,"''")>

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

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

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

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

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

#替换列表(列表元素,引用“#a#、#b#、#c#、#d#、#e#、#f#”)


在这里,您可以使用ListQualified函数获得场景的准确结果。因此,将其转换为限定值并循环使用,然后您可以用自己的列表数据替换它。无需更改列表值的任何顺序。
<cfset quoted = listQualify(headerColumnList,"''")>

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

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

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

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

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

#替换列表(列表元素,引用“#a#、#b#、#c#、#d#、#e#、#f#”)


您是在维护列表还是希望每个新的列表元素返回到单独的一行?在我的场景中,我正在处理的列表值是DB驱动的值,它进入电子表格的标题中。我需要将它们翻译成所需的语言(例如法语、中文等).所以我上面提到的代码只是一个例子。如果我能指出上面的问题,我就可以把它整理出来。它们是以列表的形式出现的,还是你正在创建一个列表?它们是来自查询的列名还是来自查询本身的数据?如果可以,您最好使用不同的数据结构。a、b、c、d等是否也从数据库中取出?你能用小提琴或一些例子来更新你的问题,说明你想做什么,以及你是如何做的吗?我认为您给出的示例对于您试图完成的任务来说可能有点过于简化。此外,replaceList()的工作方式与您的想法不同。正如Miguel-F指出的,它搜索部分匹配。因此,替换像“Email”这样的通用值总是有问题的。我怀疑这不是正确的功能,但我们真的需要看一个更好的例子来建议其他选项。您是在尝试维护列表还是希望每个新列表元素返回到单独的一行?在我的场景中,我正在处理这些列表值是DB驱动的值,它进入电子表格的标题。我需要将它们转换为所需的语言(例如法语、汉语等)。因此,我上面提到的代码只是一个示例。如果我能指出上述问题,那么我可以对其进行分类。它们是作为列表来的还是您正在构建一个列表?它们是来自查询的列名还是来自查询本身的数据?如果可以的话,您最好使用不同的数据结构。a、b、c、d等是否也被提取数据库之外?你能用提琴或一些例子来更新你的问题吗?我认为你给出的例子可能有点过于简化了。此外,replaceList()不是你想象的那样。正如Miguel-F所指出的,它搜索部分匹配。因此,替换“Email”这样的常用值总是会有问题。我怀疑这不是正确的功能,但我们真的需要看一个更好的示例来建议其他选项。谢谢你的回答。但它在数据较少时有效。但在我的例子中,我有24个列表值,其中包含许多“电子邮件”短语与字符串连接。在这种情况下,出现了一些问题。如果您能告诉我其他选择,将不胜感激!我已在回答中描述了问题。当您将“电子邮件”替换为早期检查时,然后检查“时间戳电子邮件营销”不再匹配(因为电子邮件已被更改)。您需要重新考虑您的逻辑。如果可以,请先放置最具体的字符串,然后转到更通用的字符串。例如,先检查“时间戳电子邮件营销”。然后检查“此字符串与电子邮件”,然后检查“字符串电子邮件”,最后只检查“电子邮件”.如果没有actu的更多细节,我不知道这对你是否有效
<cfset quoted = listQualify(headerColumnList,"''")>

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

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