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

时间:2014-09-16 18:31:40

标签: string coldfusion

我有一些动态数据给我这样的东西:

123,151425,15641,12

我需要在最后一个逗号后删除所有内容,以便显示:

123,151425,15641

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

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

3 个答案:

答案 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/>