Как удалить конечную запятую из строки в ColdFusion?
ColdFusion и конечная запятая
Ответ 1
Чтобы удалить конечную запятую (если она существует):
REReplace(list, ",$", "")
Чтобы удалить одну или несколько конечных запятых:
REReplace(list, ",+$", "")
Ответ 2
Также легко:
<cfset CleanList = ListChangeDelims(DirtyList, ",", ",")>
Объяснение: Это использует тот факт, что функции списка CF игнорируют пустые элементы. ListChangeDelims()
, следовательно, удаляет последний "элемент".
Ответ 3
Проверьте правую часть char - если это запятая, установите строку в подстроку оригинала с длиной -1.
Обрезка строки гарантирует, что пробелы после запятой не мешают этому методу.
<cfset myStr = "hello, goodbye,">
<cfset myStr = trim(myStr)>
<cfif right(myStr, 1) is ",">
<cfset myStr = left(myStr, len(myStr)-1)>
</cfif>
Ответ 4
Вероятно, это скорее поражает производительность, чем Regex'ing списка, но иногда, когда я заканчиваю фильтрацию/исправление грязных данных, я конвертирую его в массив и затем конвертирую обратно в список.
<cfset someVariable = arrayToList(listToArray(someVariable, ","), ",")>
Он обманывает, но он работает; -)
Ответ 5
Чтобы добавить ответ Патрика. Чтобы заменить одну или несколько запятых в конце, используйте следующее: reReplace (myString, ", + $", "," all")
Пример ниже
<cfset myString = "This is the string, with training commas,,,">
<cfset onlyTheLastTrailingComma = reReplace(myString, ",$", "", "all")>
<cfset allTrailingCommas = reReplace(myString, ",+$", "", "all")>
<cfoutput>#onlyTheLastTrailingComma#<br />#allTrailingCommas#</cfoutput>
Ответ 6
Удалить "," с обеих сторон, только с правой стороны или с левой стороны.
<cfset theFunnyList = ",[email protected],a,b,c,d,%442,d,a">
Замените смешные символы и разделите запятой
<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>
Список сортировки (числовой-A-Z) ASCending
<cfoutput> #ListSort("#theList#", "text", "ASC", ",;")# </cfoutput>