在coldfusion中使用replace,并留下尾随逗号

在coldfusion中使用replace,并留下尾随逗号,coldfusion,Coldfusion,我有一个代码,其中的值如下: a、b、c来自数据库 现在我想根据条件从字符串中删除c,c可以位于任何位置,1st,last或middle 我使用replace这样做: <cfset answer = Replace('a,b,c','c','','all')> 这是可行的,但它在结尾或开头留下一个尾随逗号,或在中间留下两个逗号来打断整个字符串,我的方法是什么它返回我0,因为你在顶部定义了0,没有按预期工作Henry-我修复了一个小错误。现在,即使找不到元素,示例也会运行。希望你

我有一个代码,其中的值如下:

a、b、c
来自数据库

现在我想根据条件从字符串中删除
c
c
可以位于任何位置,1stlastmiddle

我使用replace这样做:

<cfset answer = Replace('a,b,c','c','','all')>


这是可行的,但它在结尾或开头留下一个尾随逗号,或在中间留下两个逗号来打断整个字符串,我的方法是什么

它返回我0,因为你在顶部定义了0,没有按预期工作Henry-我修复了一个小错误。现在,即使找不到元素,示例也会运行。希望你不介意。与其用我告诉我的方式,那太棒了,但是一个单行的regex呢,@henry-没有什么冒犯性的,但我会喜欢一种用单行的方式line@bingo请参阅我的单行正则表达式解决方案的更新答案。请尝试使用ListDeleteAt()函数,而不是替换。但如果该元素不是出于好奇,它就会抛出错误,您是否真的将csv列表即“a、b、c”存储在单个列中?如果是这样,您应该规范化db表。存储逗号分隔的列表几乎总是一个坏主意。没有特定的旧代码,它是这样存储在数据库中的
<cfscript>
input = 'a,b,c';

foundAt = listFind(input, 'c');
answer = foundAt ? listDeleteAt(input, foundAt) : input;

writeOutput(answer);
</cfscript>
function listRemoveAll(list, item) {
    return REReplace(list, "\b#item#\b,|,\b#item#\b$", "", "all");
}