将单词“and”附加到列表中的最后一个元素?

时间:2013-12-17 18:23:27

标签: coldfusion

我有一个清单:“苹果,鸡蛋,牛奶”,但我想在最后一个元素上附加“和”这个词,所以它写着“苹果,鸡蛋和牛奶”。

以下是我提出的内容,但我似乎正在敲墙,而且liveoc Adob​​e文档网站已关闭(通常有一些有用的示例)。

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

结果是:

不幸的是,“苹果,鸡蛋和牛奶”。也许ListInsertAt不是正确的方法吗?

3 个答案:

答案 0 :(得分:4)

我只是使用listSetAt来修改最后一项。

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

答案 1 :(得分:2)

在内部,列表只是java.lang.String。为什么不使用正则表达式替换逗号的最后一个出现?

当然,这比将字符串转换为数组,循环,将另一个字符串注入数组,然后再将所有字符串转换回字符串更有效。

您只是修改一个字符串。无需将数组,循环,条件或大量列表方法引入其中。

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

答案 2 :(得分: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