2013-12-17 31 views
2

我有一個清單:「蘋果,雞蛋,牛奶」,但我想在最後一個元素上添加「and」一詞,使其顯示「Apple,Eggs和Milk」。將單詞「和」添加到列表中的最後一個元素?

這是我想到的,但我似乎打了一堵牆,並且liveoc Adob​​e文檔網站已關閉(通常有很多有用的示例)。

<cfset VARIABLES.shoppingList= ListInsertAt(VARIABLES.shoppingList, ListLen(VARIABLES.shoppingList),'and')> 

結果是:

「蘋果,雞蛋和牛奶」 很遺憾。也許ListInsertAt不是正確的方法呢?

+1

我認爲與其將它添加到列表中,你應該相當this「和」在渲染列表中添加,替換最後一個逗號(原因不應該有一個逗號,如果有一個「和」 ) –

+0

@Bartdude離開逗號是完全正確的 - 兩個選項在語法上都是正確的。 –

+1

看來這是某人已經解決的問題:[CFLib:ListAddAnd](http://cflib.org/udf/listAddAnd)。 – ale

回答

4

我只是用listSetAt來修改最後一項。

<cfset variables.shoppinglist = listsetat(variables.shoppinglist, listlen(variables.shoppinglist), "and " & listlast(variables.shoppinglist))> 
0

如果您只是想將「和」添加到列表中的最後一個元素,我會將其轉換爲數組並更改最後一個數組項。或者像bartdude說,離開它的名單,直到你顯示它

<cfset shoppingList = "Apples, Eggs, Milk"> 
<cfset shoppingList = ListToArray(shoppingList)> 
<cfset shoppingList[arrayLen(shoppingList)] = "and " & shoppingList[arrayLen(shoppingList)]> 
<cfset shoppingList = ArrayToList(shoppingList)> 

還是要做到這一點就顯示:

<cfset shoppingList = "Apples, Eggs, Milk"> 
<cfloop from="1" to="#listLen(shoppingList)#" index="i"> 
<cfif i gt 1> 
    <cfif i eq listLen(shoppingList)>, and<cfelse>,</cfif> 
</cfif> 
<cfoutput>#listGetAt(shoppingList,i)#</cfoutput> 
</cfloop> 

而且,如果ColdFusion的文檔已關閉。您可以使用www.cfquickdocs.com

2

在內部,列表只是一個java.lang.String。爲什麼不使用正則表達式來替換最後一次逗號?

當然,這比將字符串轉換爲數組,循環,將另一個字符串注入數組,然後將所有內容再次轉換回字符串更有效。

你只是修改一個字符串。無需將數組,循環,條件或大量列表方法引入其中。

<cfset variables.shoppinglist = reReplace(variables.shoppinglist, ",([^,]*)$", " and \1")> 
相關問題