String Coldfusion字符串删除最后一个逗号后的所有内容

String Coldfusion字符串删除最后一个逗号后的所有内容,string,coldfusion,String,Coldfusion,我有一些动态数据,可以提供如下信息: 123,151425,15641,12 我需要删除最后一个逗号后的所有内容,以便显示: 123,151425,15641 我有这段代码,但它只删除了最后一个逗号。我需要删除逗号及其后的所有内容 <cfset NewString = ReReplace(OldString, '(.*),', '\1')> <cfoutput> #NewString# </cfoutput> #新闻字符串# 使用,使用ListL

我有一些动态数据,可以提供如下信息:

123,151425,15641,12
我需要删除最后一个逗号后的所有内容,以便显示:

123,151425,15641
我有这段代码,但它只删除了最后一个逗号。我需要删除逗号及其后的所有内容

<cfset NewString = ReReplace(OldString, '(.*),', '\1')>
<cfoutput>
   #NewString#
</cfoutput>

#新闻字符串#
使用
,使用
ListLen()
获取最后一个元素的位置

ListDeleteAt(list, position [, delimiters ])
另一个解决方案:

在这里,我利用java字符串函数
lastIndexOf
返回最后一个逗号索引,并使用
substring
函数从字符串的开头提取到最后一个逗号的位置

 <cffunction name="stripAfter" returntype="String" output="false">
   <cfargument name="input" type="string" required="true">
   <cfargument name="delimiter" type="string" required="false" default=",">
   <cfset lastCommaIndex = input.lastIndexOf(",")>
    <cfif lastCommaIndex EQ -1>
        <cfreturn input>
    </cfif>
   <cfreturn input.substring(0, lastCommaIndex)>
 </cffunction>

 <cfoutput>
    #stripAfter(OldString)#
 </cfoutput><br/>

#stripAfter(旧字符串)#


这应该是您想要的

<cfif ListLen(OldString) GT 1>
  <cfset NewString = ListDeleteAt(OldString,ListLen(OldString))>
</cfif>
例如:

<cfset NewString = ListDeleteRight(OldString,1)>


如果输入不包含任何逗号,则返回空字符串。另外,对于空字符串,它会抛出一个错误“无效列表索引0”,这有什么关系?OP注意到字符串中有逗号。为listLen()>1添加一个条件检查。Rube Goldberg ish有多好
listDeleteAt()
可以很好地解决当前的问题。我认为没有必要使用java来解决这个问题,但是。。我可能不会投反对票,因为基本逻辑与列表函数方法相同。旁注,请确保正确地定义所有函数变量的范围,即
参数,局部,…
这比必要的复杂得多。@DanBracuk-如何更复杂?忽略他选择将其包装为UDF的事实,因为这是重用的良好实践,所以逻辑量是相同的。得到这个职位。如果大于0/1,则获取一个子字符串。列表函数方法没有节约成本。它同样“复杂”。不,这只是一种不同的方式,而且很可能与CF在引擎盖下所做的相似。同样,我认为不需要它,但是使用列表函数并不比使用列表函数更复杂。您需要在字符串末尾搜索它。类似的东西可能会工作
重新替换(OldString,“(,[^,]*)$”,“)
,但在这种情况下,我看不出比列表函数有多大优势。顺便说一句,对于具有所有正确成分的函数,+1。感谢您的帮助仅使用列表len部分就足够了,谢谢,我猜您错过了;-)
ListDeleteRight(list, numElements [, delimiter])
<cfset NewString = ListDeleteRight(OldString,1)>