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

Kat*_*eco 5 string coldfusion

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

123,151425,15641,12
Run Code Online (Sandbox Code Playgroud)

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

123,151425,15641
Run Code Online (Sandbox Code Playgroud)

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

<cfset NewString = ReReplace(OldString, '(.*),', '\1')>
<cfoutput>
   #NewString#
</cfoutput>
Run Code Online (Sandbox Code Playgroud)

Adr*_*eno 8

使用ListDeleteAt(),ListLen()用于获取最后一个元素的位置.

ListDeleteAt(list, position [, delimiters ])
Run Code Online (Sandbox Code Playgroud)

  • 为listLen()> 1添加条件检查. (5认同)

Fis*_*Ice 2

这应该做你想做的。

<cfif ListLen(OldString) GT 1>
  <cfset NewString = ListDeleteAt(OldString,ListLen(OldString))>
</cfif>
Run Code Online (Sandbox Code Playgroud)

如果您希望在删除末尾的元素数量上有更大的灵活性,CFLib.org中的ListDeleteRight会很有用。

<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>
Run Code Online (Sandbox Code Playgroud)

用法:

ListDeleteRight(list, numElements [, delimiter])
Run Code Online (Sandbox Code Playgroud)

例子:

<cfset NewString = ListDeleteRight(OldString,1)>
Run Code Online (Sandbox Code Playgroud)