Comment retourner chaîne partielle dans ColdFusion
Permet de dire que j'ai une chaîne The big brown fox jumped<br> over the fence.
Comment pourrais-je préciser que je veux garder uniquement les caractères qui sont avant le <br>
tag, le décapage le reste?
OriginalL'auteur The Muffin Man | 2011-01-27
Vous devez vous connecter pour publier un commentaire.
Je utiliser quelque chose de similaire, je ne sais pas si c'est plus efficace.
Je l'aime parce que je déterminer la sortie avant la production plutôt que sur la production. Mais orangepips est agréable parce que vous pouvez adapter votre sortie en fonction du contexte..
MODIFIER
Comme l'a souligné dans les commentaires le code ci-dessus en effet produit "de La" parce que de la façon dont les FC traitent chaque personnage comme un séparateur.
Mais
<cfset firstPiece = listGetAt(string, 1, "<")
produit "Le grand brun renard saute".De la CF Documentation
merci pour la capture!
Assurez-vous juste "<" fonctionne dans votre scénario. Si il est possible que la sous-chaîne contient "<" ou d'autres balises html en plus de
<br>
, vous devriez utiliser quelque chose d'autre. Si vous préférez ne pas utiliser des expressions régulières, une combinaison de findNoCase et gauche/milieu devrait fonctionner aussi.Leigh est droit. Assurez-vous que cela fonctionne pour vous dans le long terme, parce que si vous
<cfset firstPiece = listGetAt(string, 2, "<")
il sera de retourbr> over the fence.
qui j'en suis sûr, vous ne voulez pas.J'ai eu un problème similaire avec les codes html et ma solution a été
<cfset firstPiece = listGetAt(REReplace(string, "<br>", "|"), 1, "|")>
. Cela prendra la chaîne que vous avez besoin de trouver pouvez le convertir dans un seul personnage qui n'est probablement pas dans votre chaîne. Des acclamations.OriginalL'auteur Ofeargall
Si vous n'avez pas l'esprit de descendre à un peu de l'ancienne java sous-jacent CF... AColdFusion chaîne est en fait une java chaîne. Java est divisé utilise une regex, qui à son expression la plus simple peut-être la chaîne que vous voulez partager. Donc, contrairement à listToArray (qui a été étendu en cf9 pour permettre de caractères multi-splits, par la voie), il est par définition multi-caractères. Et puisque c'est une regex, si vous le voulez insensible à la casse, cela aussi peut être facilement accompli.
Donc, compte tenu de votre chaîne:
variables.myStringArray contiendra un tableau avec plus de 2 éléments, la partie avant le premier <br>, et la partie après le premier <br> (le deuxième paramètre à split, la 2, dit à seulement divisé en 2 parties, au plus fréquente, ce qui laissera tout <br>'s dans la deuxième partie de votre chaîne intacte.
string.split('(?i)<br>',2)
OriginalL'auteur Mark
Tout le monde aime les regex 'cept moi. Voici donc une approche utilisant les fonctions de chaîne à la place:
Mise à jour
Meh, de ne pas avoir un CF serveur à portée de main. Stupide
listToArray()
. En voici une qui devrait fonctionner.Mise à jour #2
Ont accès à une FC serveur maintenant. Les travaux de cette. Les adresses de tous les commentaires:
Juste assez. Mis à jour.
Que Leigh mentionne ci-dessus,
findnocase
est probablement mieux que lesfind
. (Vous auriez également besoin d'uncfif
bloc pour gérer les cas où le ruban ou de la ficelle ou ce que n'était pas présent dans la plus grande chaîne).DuPlantis: mise à jour #2 ne
findNoCase()
et utilise un ternaire déclaration au lieu de<cfif>
.Semble bon ... et les gens à l'aide de FC 8 ou plus tôt (sans ternaire opérateurs) peuvent craquer le ternaire déclaration des infos à un
cfif
bloc.OriginalL'auteur orangepips
À L'Aide De Regexs:
OriginalL'auteur walkingDeadFan
http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec22c24-7a49.html
OriginalL'auteur Henry
Pourquoi ne pas utiliser le
listFirst
fonction:OriginalL'auteur Larry C. Lyons