web-dev-qa-db-fra.com

Coldfusion: comment diviser une chaîne en un ensemble de variables

J'essaie de m'apprendre ColdFusion.

J'ai une chaîne provenant de la base de données dans ce format:

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

Tout vient de # getRacer.txtDescription #. Le format de ce texte sera toujours le même.

J'ai besoin de le diviser en 3 variables. J'ai essayé ceci (dérivé de l'exemple sur le site Web d'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.

Je me suis retrouvé en quelque sorte avec 11 éléments dans le tableau.

Je vous remercie

15
Jack Pilowsky

Cela devrait fonctionner.

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

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

La raison pour laquelle ListtoArray affiche 11 éléments est que ColdFusion traite chaque caractère de la chaîne de délimitation (<br/>) Comme un délimiteur distinct

Sur la base du commentaire de @ Leigh mettant à jour ma réponse pour s'assurer que les gens devraient apprendre les API Coldfusion plutôt que de jouer avec Java fonctions, <cfset a = ListToArray(TestString, "<br/>", false, true)> fonctionnera également. Merci Leigh.

Remarque: Le false à la fin correspond au drapeau includeEmptyFields et le true est pour le drapeau multiCharacterDelimiter. Voir la documentation .

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

J'ai choisi un caractère pipe car il est peu probable qu'il existe déjà dans votre chaîne. Si vous vouliez tenir compte de la possibilité que votre balise BR utilise ou non la syntaxe XML, vous pourriez vous exprimer régulièrement:

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