2016-11-29 61 views
0

請假設#headerNames#的值爲Apple Orange Pear如何添加一組值作爲列表?

我該如何將此視爲列表?

我嘗試這樣做:

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

但是,這是行不通的。那麼如何將#headerNames#的值存儲爲列表?

PS:之所以我要求假設#headerNames#是因爲這些值來自讀取excel文件,因此,這個問題有很多不相關的代碼。但如果需要這些,請讓我知道,我將編輯/更新問題。

+0

headerNames的原始值是一個空間分隔的列表。 –

回答

2

你實際上不需要改變任何東西,因爲這被認爲是一個列表。 ColdFusion的識別space爲有效的分隔符:

<cfset headerNames = "Apple Orange Pear"> 

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

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

這隻給我1值的輸出。 – gosi123

+1

不,[它完美地工作](http://trycf.com/gist/de72d20d350988284da4c7c7b90b5115/acf2016?theme=monokai)。如果它不適合你,那就意味着'headerNames'包含了與你描述的不同的東西。不要依賴視覺識別。而是轉儲字符串中每個字符的'asc'值。很可能你在想的是一個空間,實際上是一個不同的空白字符。因此,爲什麼它不起作用。 – Leigh

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

+0

嗨,我試過這個,但它不工作。基本上'#headerNames#'已經包含一個帶空格的列表,但我不認爲它是一個列表,因爲我不能對它做一個'listlen'。如果我做了一個listlen,它會給出'1 1 1'的結果。 – gosi123

+0

不工作如何?對於CF來說,「list」只是一個由某個字符分隔的字符串 - 在這種情況下,它是一個空格。所以是的,這是一個「名單」。我懷疑listLen不工作,因爲您忘記將分隔符設置爲空格(默認爲逗號)。 – Leigh

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