Подтвердить что ты не робот

Coldfusion: как разбить строку на набор переменных

Я пытаюсь научить себя ColdFusion.

У меня есть строка, поступающая из базы данных в этом формате:

domain.com
<br/>
www.facebook.com/facebookpage
<br/>
http://instagram.com/instagrampage

Все это происходит из # getRacer.txtDescription #. Формат этого текста всегда будет одинаковым.

Мне нужно разбить его на 3 переменные. Я попробовал это (полученное из примера на сайте adobe)

<h3>ListToArray Example</h3>
<cfset myList = ValueList(getRacer.txtDescription)>
<p>My list is a list with <cfoutput>#ListLen(myList)#</cfoutput> elements.
<cfset myArrayList = ListToArray(myList,'<br/>')>
<p>My array list is an array with 
<cfoutput>#ArrayLen(myArrayList)#</cfoutput> elements.

Я как-то закончил с 11 элементами в массиве.

Спасибо

4b9b3361

Ответ 1

Это должно сработать.

<cfset TestSTring = "domain.com<br/>www.facebook.com/facebookpage<br/>http://instagram.com/instagrampage">

<cfset a = TestString.Split("<br/>")>

Причина ListtoArray отображает 11 элементов, потому что ColdFusion обрабатывает каждый символ в строке разделителя (<br/>) в качестве отдельного разделителя

На основе комментария @Leigh, обновляющего мой ответ, чтобы люди научились API Coldfusion, а не занимались функциями Java, также будет работать <cfset a = ListToArray(TestString, "<br/>", false, true)>. Спасибо Ли.

Примечание. false в конце для флага includeEmptyFields, а true - для флага multiCharacterDelimiter. См. документы.

Ответ 2

<cfset myList = ReplaceNoCase(getRacer.txtDescription,'<br/>','|','ALL')>
<cfset myArrayList = ListToArray(myList,'|')>

Я выбрал символ канала, потому что он вряд ли уже существует в вашей строке. Если вы хотите учесть возможность того, что ваш тег BR может или не может использовать синтаксис XML, вы можете задать регулярное выражение:

<cfset myList = ReReplaceNoCase(str,'<br/?>','|','ALL')>
<cfset myArrayList = ListToArray(myList,'|')>