Замена значения списка ColdFusion - PullRequest
0 голосов
/ 10 июня 2018

У меня есть набор значений списка в переменной 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 голосов
/ 13 июня 2018

Здесь вы можете использовать функцию ListQualify, чтобы получить точный результат вашего сценария.Так что конвертируйте его в соответствующие значения и зацикливая его, тогда вы сможете заменить его собственными данными списка.Не нужно менять порядок значений списка.

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

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

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

0 голосов
/ 11 июня 2018

Код работает как написано.Вы видите это, потому что ваш чек на «Email» в функции replaceList() срабатывает перед чеком на «Time Stamp Email Marketing».Обратите внимание на слово «Email» в этой строке.

Я не знаю, каков ваш фактический вариант использования, но вы можете изменить порядок своего кода для этого конкретного примера, чтобы он работал так, как вы хотите.

<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().

...