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)>