12

如何从 ColdFusion 中的字符串中删除尾随逗号?

4

6 回答 6

25

要删除尾随逗号(如果存在):

REReplace(list, ",$", "")

去除一个或多个尾随逗号:

REReplace(list, ",+$", "")
于 2008-10-08T12:24:07.997 回答
15

也很容易:

<cfset CleanList = ListChangeDelims(DirtyList, ",", ",")>

说明:这利用了 CF 列表函数忽略空元素这一事实。ListChangeDelims()因此剥离了最后一个“元素”。

于 2008-10-20T08:11:17.973 回答
5

检查最右边的字符 - 如果它是逗号,则将字符串设置为原始的子字符串,长度为 -1。

修剪字符串可确保尾随逗号后的空格不会干扰此方法。

<cfset myStr = "hello, goodbye,">
<cfset myStr = trim(myStr)>

<cfif right(myStr, 1) is ",">
    <cfset myStr = left(myStr, len(myStr)-1)>
</cfif>
于 2008-10-08T12:23:29.103 回答
4

这可能比正则表达式列表更多地影响性能,但有时当我最终过滤/修复脏数据时,我将其转换为数组,然后将其转换回列表。


<cfset someVariable = arrayToList(listToArray(someVariable, ","), ",")>

这是作弊,但它有效;-)

于 2008-10-13T15:30:38.680 回答
2

添加到帕特里克的答案。要在末尾替换一个或多个逗号,请使用以下命令:replace(myString, ",+$", "", "all")

下面的例子

<cfset myString = "This is the string, with training commas,,,">
<cfset onlyTheLastTrailingComma = reReplace(myString, ",$", "", "all")>
<cfset allTrailingCommas = reReplace(myString, ",+$", "", "all")>
<cfoutput>#onlyTheLastTrailingComma#<br />#allTrailingCommas#</cfoutput>
于 2008-10-08T12:35:43.510 回答
1

从两侧、仅右侧或仅左侧删除“,”

<cfset theFunnyList = ",!@2ed32,a,b,c,d,%442,d,a">

替换有趣的字符并用逗号分隔

<cfset theList = rereplace(theFunnyList, "[^A-Za-z0-9]+", ",", "all")>
<cfset theList = trim(theList)>
<cfif left(theList, 1) is "," and right(theList, 1) is ",">
  <cfset theList = right(theList, len(theList)-1)>
  <cfset theList = left(theList, len(theList)-1)>
<cfelseif right(theList, 1) is ",">
  <cfset theList = left(theList, len(theList)-1)>
<cfelseif left(theList, 1) is ",">
  <cfset theList = right(theList, len(theList)-1)>
</cfif>

排序列表(从数字到 AZ)升序

<cfoutput> #ListSort("#theList#", "text", "ASC", ",;")# </cfoutput>
于 2010-02-18T18:17:30.393 回答