ColdFusion и конечная запятая

#coldfusion

Вопрос:

Как удалить конечную запятую из строки в ColdFusion?

Ответ №1:

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

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

Чтобы убрать одну или несколько запятых в конце:

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

Комментарии:

1. Сначала я попробовал общую замену, но когда я это делаю, она, конечно, удаляет «все» запятые в строке. Я только хочу удалить этот последний.

Ответ №2:

Также легко:

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

Пояснение: Это использует тот факт, что функции списка CF игнорируют пустые элементы. ListChangeDelims() следовательно, удаляет этот последний «элемент».

Ответ №3:

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

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

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

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

Комментарии:

1. попробовав Reg Ex Патрика ниже, он сделал именно то, что мне было нужно, в ГОРАЗДО меньшем количестве кода, еще раз спасибо.

2. Ответ Патрика намного лучше, хорошо — мой больше похож на быстрый взлом. Рад, что все уладилось для тебя в любом случае!

Ответ №4:

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

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

Это обман, но он работает 😉

Комментарии:

1. Возможно, это обман… но это просто решило мою проблему после пары часов ссания… Спасибо!

Ответ №5:

Чтобы добавить что-то к ответу Патрика. Чтобы заменить одну или несколько запятых в конце, используйте следующее: reReplace(myString, «, $», «», «все»)

Пример Ниже

 <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 = ",!@2ed32,a,b,c,d,D2,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) по возрастанию

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

Комментарии:

1. Ричард, добро пожаловать в Stack Overflow и спасибо за вклад. Вы можете отформатировать код, сделав отступ в четыре пробела.