Quel est le moyen le plus rapide de compter le nombre de fois qu’une certaine chaîne apparaît dans une chaîne plus grande ? Ma meilleure supposition serait de remplacer toutes les instances de cette chaîne par rien, de calculer la différence de longueurs et de diviser par la longueur de la sous-chaîne, mais cela semble plutôt lent, et j’ai besoin d’analyser de grandes quantités de données.
Réponses
Trop de publicités?
Brian Roach
Points
43787
Mattrition
Points
1912
Matthew Lock
Points
3945
Juste pour être complet, vous pouvez appeler à plusieurs reprises la fonction d’index dans une boucle et compter toutes les fois où elle a renvoyé l’index de la sous-chaîne dans la chaîne, et changer la position de départ. Cela éviterait d’utiliser des regex, et dans mes tests est un peu plus rapide que les solutions regex.
J’ai adapté un sous-marin pour le faire à partir d’ici: http://www.misc-perl-info.com/perl-index.html