2008-10-08 3 views

ответ

21

Чтобы удалить Запятая (если она существует):

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

Для того, чтобы лишить один или несколько завершающих запятые:

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

Сначала я попробовал заменить генератор, но когда я это делаю, он, конечно, удаляет «все» запятые в строке. Я хочу только удалить этот трейлинг. – 2008-10-08 12:25:43

5

Проверьте самый правый символ - если это запятая, установите строку в подстроку оригинала с длиной -1.

Обрезка строки гарантирует, что пробелы после запятой не мешают этому методу.

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

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

, который, казалось, сделал трюк. Спасибо – 2008-10-08 12:31:02

+1

, попробовав Patrick's Reg Ex ниже, он сделал именно то, что мне нужно, в КОЛИЧЕСТВЕ меньше кода, еще раз спасибо. – 2008-10-08 12:47:29

+0

Патрик - лучший ответ, мой ум - скорее быстрый хак. Рад, что он отсортирован для вас в любом случае! – ConroyP 2008-10-08 12:54:36

2

Чтобы добавить на ответ Патрика. Для того, чтобы заменить один или несколько запятых в конце использовать следующее: reReplace (туЗЬптд, «+ $», „“, „все“)

Пример Ниже

<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

Это, вероятно, больше из производительность, чем Regex'ing, но иногда, когда я заканчиваю фильтрацию/исправление грязных данных, я конвертирую его в массив и затем конвертирую обратно в список.


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

Это обман, но он работает ;-)

14

Также легко:

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

Объяснение: Это имеет преимущество в том, что список функций CF игнорировать пустые элементы. ListChangeDelims(), следовательно, удаляет этот последний элемент.

1

Удалить "" с обеих сторон, как раз с правой стороны, или только с левой стороны

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

Заменить Весёлые символы и отделите с Comma

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

Список Sort (Числовой для AZ) ASCending

<cfoutput> #ListSort("#theList#", "text", "ASC", ",;")# </cfoutput> 
Смежные вопросы