我试图自学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个项目。
谢谢
答案 0 :(得分:24)
这应该有效。
<cfset TestSTring = "domain.com<br/>www.facebook.com/facebookpage<br/>http://instagram.com/instagrampage">
<cfset a = TestString.Split("<br/>")>
ListtoArray
显示11项的原因是 ColdFusion将分隔符字符串(<br/>
)中的每个字符视为单独的分隔符
基于@Leigh的评论更新我的答案以确保人们应该学习Coldfusion API而不是摆弄Java函数,<cfset a = ListToArray(TestString, "<br/>", false, true)>
也可以。谢谢Leigh。
注意: 最后的false
代表includeEmptyFields
标志,true
代表multiCharacterDelimiter
标志。 See the docs
答案 1 :(得分:2)
<cfset myList = ReplaceNoCase(getRacer.txtDescription,'<br/>','|','ALL')>
<cfset myArrayList = ListToArray(myList,'|')>
我选择了一个竖线字符,因为它不太可能已存在于您的字符串中。如果您想说明您的BR标签可能使用或不使用XML语法的可能性,那么您可以使用正则表达式:
<cfset myList = ReReplaceNoCase(str,'<br/?>','|','ALL')>
<cfset myArrayList = ListToArray(myList,'|')>