【问题标题】:How to add a group of values as a list?如何将一组值添加为列表?
【发布时间】:2016-11-30 22:33:51
【问题描述】:

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

如何将其视为列表?

我试过了:

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

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

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

【问题讨论】:

  • headerNames 的原始值是一个空格分隔的列表。

标签: list coldfusion coldfusion-11


【解决方案1】:

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

<cfset headerNames = "Apple Orange Pear">

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

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

【讨论】:

  • 这只会给我 1 个值的输出。
  • 不,it works perfectly。如果它不适合您,则意味着 headerNames 包含与您描述的不同的内容。不要依赖视觉识别。而是转储字符串中每个字符的asc 值。您所想的很可能是一个空格,实际上是一个不同的空格字符。因此,为什么它不起作用。
【解决方案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()

【讨论】:

  • 嗨,我试过了,但它不起作用。基本上#headerNames# 已经包含一个带有空格的列表,但我不认为它是一个列表,因为我不能在它上面做一个listlen。如果我做一个listlen,它会给出1 1 1的结果。
  • 不工作怎么办?对于 CF,“列表”只是一个由某个字符分隔的字符串——在这种情况下,它是一个空格。所以是的,它是一个“列表”。我怀疑 listLen 不起作用,因为您忘记将分隔符设置为空格(默认为逗号)。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-15
    • 1970-01-01
    • 2019-02-16
    相关资源
    最近更新 更多