8
votes

Comment pouvez-vous vérifier si une chaîne se termine par une sous-chaîne spécifique?

Y a-t-il une fonction de chaîne ColdFusion pour vérifier si une chaîne se termine par une autre chaîne? Sinon, quel est le moyen le plus simple et le plus efficace d'accomplir cela?


0 commentaires

3 Réponses :


14
votes

Vous pouvez utiliser la droite droite (String, NumberOfCharacters) CODE> Fonction.

Exemple (CFScript): P>

existingString = "The Quick brown Fox jumps";
tailString = "umps";
stringMatch = false;
if (right(existingString, len(tailString)) eq tailString){
   stringMatch = true;
}


2 commentaires

Merci! Cela ressemble à une bonne solution ... Je pense que je vais me tenir au mien depuis que les sous-chaînes que je recherchent sont une combinaison de quelques personnages alphabétiques ... mais merci pour votre réponse!


@Froadie Votre chaîne sera toujours une combinaison de quelques personnages alpha ... jusqu'au jour où ce n'est pas le cas. Pourquoi laisser un bogue potentiel quand il y a une solution plus claire, plus sûre et meilleure. Ne supposez pas.



2
votes

Une solution que j'ai trouvée ( http://taturial130.asycfm.com/ ) - Utilisez une expression régulière Recherche - refindnocase code>, avec un signe $ code> pour représenter la fin de la chaîne.

REFindNoCase("end$", "check if this string ends with end")


3 commentaires

Cette fonction fonctionne bien si vous voulez seulement comparer des caractères littéraux. Vous rencontrerez des problèmes si votre chaîne de recherche contient des caractères spéciaux avec une signification dans Regex. Comme.? $ + *. Vous devrez vous échapper d'abord


Il n'y a pas besoin de regex ici. La solution de Schuldhaus @andreas est meilleure et il a expliqué pourquoi Regex causera des maux de tête. À savoir: "Certaines personnes, quand elles sont confrontées à un problème, pensez-moi" que je sais, je vais utiliser des expressions régulières. "Maintenant, ils ont deux problèmes." codinghorror.com/blog/ 2008/06 / ...


Personnellement, j'aime la regex, mais ceci est un exemple où il est trop excité. La méthode de gauche () énumérée ci-dessus est plus efficace.



12
votes

C'est là que je saute jusqu'au niveau Java Real FAST.

Ucase(string).endsWith("STRING");


0 commentaires