Coldfusion:如何将字符串拆分为一组变量

时间:2014-05-15 00:11:22

标签: coldfusion cfml

我试图自学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个项目。

谢谢

2 个答案:

答案 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,'|')>