2008-10-08 13 views

Respuesta

21

Para eliminar una coma final (si existe):

REReplace(list, ",$", "") 

a la tira de uno o más comas finales:

REReplace(list, ",+$", "") 
+0

Probé un reemplazo general primero, pero cuando lo hago, por supuesto elimina "todas" las comas en la cadena. Solo quiero eliminar ese final. –

+0

Eso lo hizo, eliminando el "todo", duh ... –

5

Marque la casilla más a la derecha: si se trata de una coma, establezca la cadena en una subcadena del original, con longitud -1.

Recortar la cadena garantiza que los espacios después de la coma final no interfieran con este método.

<cfset myStr = "hello, goodbye,"> 
<cfset myStr = trim(myStr)> 

<cfif right(myStr, 1) is ","> 
    <cfset myStr = left(myStr, len(myStr)-1)> 
</cfif> 
+0

que parecían hacer el truco. Gracias –

+1

después de probar Patrick's Reg Ex a continuación, hizo exactamente lo que necesitaba en MUCHO menos código, gracias de nuevo. –

+0

Patrick es la mejor respuesta, la mía es más rápida. Me alegro de que haya sido ordenado para usted de cualquier manera! – ConroyP

2

Para añadir a la respuesta de Patrick. Para reemplazar una o más comas al final utilice la siguiente: reReplace (miCadena "+ $", "", "todos")

Ejemplo A continuación

<cfset myString = "This is the string, with training commas,,,"> 
<cfset onlyTheLastTrailingComma = reReplace(myString, ",$", "", "all")> 
<cfset allTrailingCommas = reReplace(myString, ",+$", "", "all")> 
<cfoutput>#onlyTheLastTrailingComma#<br />#allTrailingCommas#</cfoutput> 
4

Esto es probablemente más de un rendimiento más que Regex en una lista, pero a veces, cuando termino de filtrar/corregir datos sucios, lo convierto en una matriz y luego lo vuelvo a convertir en una lista.


<cfset someVariable = arrayToList(listToArray(someVariable, ","), ",")> 

es hacer trampa, pero funciona ;-)

+0

Hacer trampa puede ser ... pero ha resuelto mi problema después de un par de horas de mear ... ¡Gracias! –

14

También es fácil:

<cfset CleanList = ListChangeDelims(DirtyList, ",", ",")> 

Explicación: Esto se aprovecha del hecho de que las funciones de lista CF ignoran los elementos vacíos. ListChangeDelims(), por lo tanto, elimina ese último "elemento".

1

Quitar "" desde ambos lados, sólo el lado derecho, o sólo el lado izquierdo

<cfset theFunnyList = ",[email protected],a,b,c,d,%442,d,a"> 

sustituir caracteres divertidos y separados con comas

<cfset theList = rereplace(theFunnyList, "[^A-Za-z0-9]+", ",", "all")> 
<cfset theList = trim(theList)> 
<cfif left(theList, 1) is "," and right(theList, 1) is ","> 
    <cfset theList = right(theList, len(theList)-1)> 
    <cfset theList = left(theList, len(theList)-1)> 
<cfelseif right(theList, 1) is ","> 
    <cfset theList = left(theList, len(theList)-1)> 
<cfelseif left(theList, 1) is ","> 
    <cfset theList = right(theList, len(theList)-1)> 
</cfif> 

Lista Sort (Numérico a AZ) ASCending

<cfoutput> #ListSort("#theList#", "text", "ASC", ",;")# </cfoutput> 
+0

Richard, bienvenido a Stack Overflow y gracias por la contribución. Puede formatear el código sangrando cuatro espacios. –