如何将一组值添加为列表?
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
请假设 #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