我有一些动态数据给我这样的东西:
123,151425,15641,12
我需要在最后一个逗号后删除所有内容,以便显示:
123,151425,15641
我有这段代码,但它只删除了最后一个逗号。我需要删除逗号和之后的所有内容。
<cfset NewString = ReReplace(OldString, '(.*),', '\1')>
<cfoutput>
#NewString#
</cfoutput>
答案 0 :(得分:8)
使用ListDeleteAt()
,使用ListLen()
获取最后一个元素的位置。
ListDeleteAt(list, position [, delimiters ])
答案 1 :(得分:2)
这应该做你想要的。
<cfif ListLen(OldString) GT 1>
<cfset NewString = ListDeleteAt(OldString,ListLen(OldString))>
</cfif>
如果您想要更多地灵活选择要删除多少元素,ListDeleteRight中的CFLib.org将非常有用。
<cfscript>
/**
* Deletes the n rightmost elements from the specified list.
* Modified by RCamden
*
* @param list The list to modify.
* @param numElements The number of elements to delete.
* @param delimiter The delimiter to use. Defaults to a comma.
* @return Returns a string.
* @author Shaun Ambrose (shaun.ambrose@arcorsys.com)
* @version 1, April 24, 2002
*/
function ListDeleteRight(list, numElements) {
var i=0;
var delimiter=",";
if (Arraylen(arguments) gt 2) {
delimiter=arguments[3];
}
if (numElements gt ListLen(list, delimiter)) return "";
for (i=1; i lte numElements; i=i+1) {
list=listDeleteAt(list, listLen(list, delimiter), delimiter);
}
return list;
}
</cfscript>
用法:
ListDeleteRight(list, numElements [, delimiter])
示例:
<cfset NewString = ListDeleteRight(OldString,1)>
答案 2 :(得分:-1)
另一种解决方案:
这里我利用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/>