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
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 .
<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,'|')>