web-dev-qa-db-ja.com

Coldfusion:文字列を一連の変数に分割する方法

私は自分自身にColdFusionを教えようとしています。

私はこの形式でデータベースから入ってくる文字列を持っています:

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

すべては#getRacer.txtDescription#から取得されます。このテキストの形式は常に同じです。

3つの変数に分割する必要があります。私はこれを試しました(Adobe Webサイトの例から派生)

<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個のアイテムができました。

ありがとうございました

15
Jack Pilowsky

これは動作するはずです。

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

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

ListtoArrayが11個のアイテムを表示する理由は、ColdFusionは区切り文字列(_<br/>_)の各文字を個別の区切り文字として処理するためです

@Leighのコメントを更新して、Java functions、<cfset a = ListToArray(TestString, "<br/>", false, true)>も機能します。Leighに感謝します。

注:末尾のfalseincludeEmptyFieldsフラグ用で、truemultiCharacterDelimiterフラグ用です。 ドキュメントを参照

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

パイプ文字を選択したのは、既に文字列に存在する可能性が低いためです。 BRタグがXML構文を使用する場合と使用しない場合の可能性を考慮したい場合は、正規表現を使用できます。

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