我有一个清单:“苹果,鸡蛋,牛奶”,但我想在最后一个元素上附加“和”这个词,所以它写着“苹果,鸡蛋和牛奶”。
以下是我提出的内容,但我似乎正在敲墙,而且liveoc Adobe文档网站已关闭(通常有一些有用的示例)。
<cfset VARIABLES.shoppingList= ListInsertAt(VARIABLES.shoppingList, ListLen(VARIABLES.shoppingList),'and')>
结果是:
不幸的是,“苹果,鸡蛋和牛奶”。也许ListInsertAt不是正确的方法吗?答案 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。