2012-02-10 3 views
2

Я пишу веб-сервис в ColdFusion. Проблема в том, что я не могу понять, как избавиться от запятой после последнего элемента. Мой код выглядит следующим образом:Как избавиться от последней запятой при создании списка?

<cfoutput query="Attachments"> 
    #url#, 
</cfoutput> 

Который производит вывод, как это (обратите внимание на Запятая)

url1,url2,url3, 

Как я могу избавиться от Запятая и производить это вместо этого?

url1,url2,url3 

ответ

8

Это простой метод:

<cfoutput>#ValueList(Attachments.url)#</cfoutput> 
+0

Дарн, я слишком многословен. Вы избили меня за секунды;) – Leigh

+1

ValueList - лучший способ в этом сценарии, но в других случаях вы можете реализовать счетчик и остановиться, когда счетчик равен количеству записей. что-то вроде '' ' ' ' # URL # ,' ' ' ' ' ValueList также принимает широкий диапазон разделителей –

+1

@mrbusche, на самом деле вам не нужно устанавливать счетчик. '' CurrentRow' доступен в цикле, поэтому вы можете просто проверить его следующим образом: ' # url # , ' –

0

Jake's answer является то, что необходимо в данном конкретном случае.

Для более общих случаев, вы можете сделать это:

<cfloop ...> 
    <cfset myList=listAppend(myList,value)> 
</cfloop> 

Там также немного обмана вы можете сделать, так как ColdFusion (по умолчанию) игнорирует пустые элементы списка:

<cfset myList=arrayToList(listToArray(myList))> 

Хека, даже это сработает:

<cfset myList=listChangeDelims(myList , "," , ",")> 

Конечно, если вы не выводите список в виде строки, вы не нужно беспокоиться об этой запятой в конце, так как ColdFusion просто игнорирует пустой элемент. Если вы выводите его как строку, вот еще один способ очистить эту запятую. Это не так надежно, как другие.

<cfoutput>#left(trim(mylist),len(trim(mylist))-1)#</cfoutput>