如何将一组值添加为列表?

时间:2016-11-29 09:04:18

标签: list coldfusion coldfusion-11

请假设#headerNames#的值为Apple Orange Pear

如何将其视为列表?

我试过了:

<cfset headerList = "">
<cfset headerList = ListAppend(headerList,"#headerNames#",",")>

但这不起作用。那么如何将#headerNames#的值存储为列表?

PS:我之所以要求假设#headerNames#是因为这些值来自于读取excel文件,因此,这个问题有很多不相关的代码。但如果需要,请告诉我,我将编辑/更新问题。

3 个答案:

答案 0 :(得分:2)

您可以使用ColdFusion ListChangeDelims()函数将space分隔列表转换为逗号分隔列表,然后将列表附加到所需列表。喜欢这个

<cfscript>
  headerNames = "Apple Orange Pear";
  headerList = ListChangeDelims(headerNames,",", " ");
  writeoutput(headerList);
</cfscript>

我能想到的另一个解决方案是使用ColdFusion ReReplace()函数将空格分隔列表中的所有空格替换为comma (,)。喜欢这个

<cfscript>
   headerNames = "Apple Orange Pear";
   headerList = ReReplace(headerNames," ", ",", "all");
   writeoutput(headerList);
</cfscript>

要阅读有关这些功能的更多信息,请访问文档中的以下链接: ListChangeDelims()ReReplace()

答案 1 :(得分:2)

您实际上不必更改任何内容以将其视为列表。 ColdFusion将space识别为有效分隔符:

<cfset headerNames = "Apple Orange Pear">

<cfoutput>
    <cfloop list="#headerNames#" delimiters=" " index="i">
        #i#<br />
    </cfloop>
</cfoutput>

<!--- output:
Apple
Orange
Pear
--->

答案 2 :(得分:0)

ColdFusion中的列表只是字符串,因此不需要转换或转换,任何字符串都可以作为列表处理。您的headerNames字段已经是一个列表。

ColdFusion中的所有列表函数都有一个可选的分隔符字段 即:

<cfset headerNamesLen = listlen(headerNames, " ")>              <!--- 3 --->
<cfset headerNames = listAppend(headerNames, "kiwi", " ")>      <!--- Apple Orange Pear kiwi --->
<cfset orangeIndex = listfind(headerNames, "Orange", " ")>      <!--- 2 --->

如果您需要返回一个列表,该列表将被其他期望默认逗号分隔列表的函数使用,请使用

<cfset headerList = ListChangeDelims(headerNames, ","," ")>

由于您是从excel文件加载 - 如果您还需要处理空白条目 - 它看起来像这样

<cfset headerNamesLen = listlen(headerNames, " ", true)>              <!--- 3 --->
<cfset headerNames = listAppend(headerNames, "kiwi", " ")>      <!--- Apple Orange Pear kiwi --->
<cfset orangeIndex = listfind(headerNames, "Orange", " ", true)>      <!--- 2 --->

使用第二个可选字段 includeEmptyValues