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

How to add a group of values as a list?

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

如何将其视为列表?

我试过这个:

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

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

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

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

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

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

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

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

您实际上无需更改任何内容即可将其视为列表。 ColdFusion 将 space 识别为有效的分隔符:

<cfset headerNames = "Apple Orange Pear">

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

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

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

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

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

如果您需要 return 一个列表,该列表将被其他需要默认逗号分隔列表的函数使用,那么请使用

<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