2008-10-08 14 views

Odpowiedz

21

Aby usunąć przecinek spływu (jeśli istnieje):

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

Aby rozebrać jeden lub więcej końcowe przecinki:

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

Próbowałem zastępować ogólne, ale kiedy to zrobię, oczywiście usuwa "wszystkie" przecinki w łańcuchu. Chcę tylko usunąć ten końcowy. –

+0

Zrobiłem to, usuwając "wszystko", duh ... –

5

Sprawdź prawy znak - jeśli jest to przecinek, ustaw ciąg na podłańcuch oryginału o długości -1.

Przycinanie ciągu znaków zapewnia, że ​​spacje po przecinku końcowym nie będą kolidować z tą metodą.

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

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

wydawało się, że to wystarczy. Dzięki –

+1

po wypróbowaniu Patricka Reg Ex poniżej, zrobiłem dokładnie to, czego potrzebowałem w DUŻO mniej kodu, jeszcze raz dziękuję. –

+0

Patryka to dużo lepsza odpowiedź - moja jest bardziej szybka. Cieszę się, że posortowano je dla ciebie w obie strony! – ConroyP

2

Aby dodać odpowiedź na Patryka. Aby wymienić na końcu jeden lub więcej przecinków użyć następujących: reReplace (myString "+ $", "", "wszyscy")

Przykład Poniżej

<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

Jest to prawdopodobnie więcej Uderzenie wydajnościowe niż Regeksowanie listy, ale czasami, gdy kończę filtrowanie/naprawianie brudnych danych, konwertuję je do tablicy, a następnie konwertuję z powrotem na listę.


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

Jest to oszustwo, ale działa ;-)

+0

Oszukiwanie może być ... ale to rozwiązało mój problem po kilku godzinach sikania ... Dzięki! –

14

także proste:

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

Objaśnienie: Ten korzysta z faktu, że CF lista funkcji ignorowania pustych elementów. ListChangeDelims() konsekwentnie usuwa ostatni "element".

1

Usuń „” z obu stron, po prostu po prawej stronie, albo po prostu po lewej stronie

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

Wymień zabawne postacie i oddzielić przecinkiem

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

Sortuj listę (numeryczna AZ) ASCending

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

Richard, witamy w Stack Overflow i dziękujemy za wkład. Możesz sformatować kod wciskając cztery spacje. –