J'ai mis en pratique les optimisations qui m'ont été suggérées par Timothee Groleau, et voici donc une version plus optimisée de la classe StringUtils. J'ai également mis en place mon autre implémentation de la méthode reverse, qui se révèle plus performante (MM a bien travaillé sur les tableaux apparemment 8)) ...

Je n'ai finalement pas intégré l'encodage MD5, pour une raison tout bête, qui est que c'est long ! :D En fait, c'est un surcroit de poids (quelques Ko), pour une utilisation moins fréquente que les fonctionnalités actuelles de la classe. Il me paraît mieux de faire une classe dédiée à l'encodage par exemple. Vous pourrez trouver son implémentation par neo-lao dans le commentaire de ce post.

En passant, neo-lao est un de mes partenaires de Flash Forum et il a ouvert un petit site de ressources, ou il mets à disposition ses réalisations Flash et autres : neo-lao ressources. :)

Code de la classe StringUtils/*************************
* StringUtils.as v0.2
* Fonction "utilitaires" de traitement
* des chaînes de caractères
*
*-------------------
* LAlex
* <a href="http://www.lalex.com/">http://www.lalex.com/</a>
*
* ------------------
* Aide à l'optimisation lTrim, rTrim et trim
* Thimothee Groleau
* <a href="http://www.timotheegroleau.com/">http://www.timotheegroleau.com/</a>
*
**************************/

class com.lalex.utils.StringUtils {
        // Caractères considérés comme caractères d'espacement
        private static var DEFAULT_SPACECHARS:String = "

\t"
;
        // StringUtils.replace
        // Cherche une suite de caractères dans une chaine
        // pour la remplacer par une autre
        // ----------
        // $str : Chaine de caractêres à traiter
        // $search : Chaine de caractère à chercher
        // $replace : Chaine de caractère de remplacement
        public static function replace($str:String, $search:String, $replace:String):String {
                return $str.split($search).join($replace);
        }
        private static function spaceStringToObject($space:Object):Object {
                var spObj:Object = new Object();
                // Si aucun caractères n'est spécifié, utilise
                // les caractères par défaut.
                if ($space == undefined) {
                        $space = DEFAULT_SPACECHARS;
                }
                if (typeof $space == "string") {
                        // Remplit l'objet
                        var spLen:Number = $space.length;
                        while(--spLen >= 0) {
                                spObj[$space.charAt(spLen)] = true;
                        }
                } else {
                        spObj = $space;
                }
                return spObj;
        }
        // >> private <<
        //
        // StringUtils._lTrim
        // On supprime tous les caractères d'espacement
        // au début de la chaine de caractères. Un objet
        // dont les propriétés sont les caractères d'espacement
        // lui est transmis.
        private static function _lTrim($str:String,$space:Object):String {
                // Longueur de la chaine restante
                var strLen:Number = $str.length;
                // Position actuelle
                var strPos:Number = 0;
                // Tant que la chaine n'est pas vide
                while (strLen > 0) {
                        // Si on ne trouve pas un espace, on arrete la boucle
                        if (!$space[$str.charAt(strPos)]) {
                                break;
                        }
                        // On avance d'une position
                        strPos++;
                        // On raccourcit "virtuellement" la chaine
                        strLen--;
                }
                // On retourne la chaine sans les caractères trouvés.
                return $str.slice(strPos);
        }
        // >> private <<
        //
        // StringUtils._rTrim
        // On supprime tous les caractères d'espacement
        // à la fin de la chaine de caractères. Un objet
        // dont les propriétés sont les caractères d'espacement
        // lui est transmis
        private static function _rTrim($str:String,$space:Object):String {
                // Longueur de la chaine restante
                var strLen:Number = $str.length;
                // Position actuelle
                var strPos:Number = strLen-1;
                // Tant que la chaine n'est pas vide
                while (strLen > 0) {
                        // Si on ne trouve pas un espace, on arrete la boucle
                        if (!$space[$str.charAt(strPos)]) {
                                break;
                        }
                        // On avance d'une position
                        strPos--;
                        // On raccourcit "virtuellement" la chaine
                        strLen--;
                }
                // On retourne la chaine sans les caractères trouvés.
                return $str.slice(0,strPos+1);
        }
        // StringUtils.lTrim
        // On supprime tous les caractères d'espacement
        // au début de la chaine de caractères. Une chaine
        // dont dont chaque caractère est un caractère d'espacement
        // lui est transmise.
        public static function lTrim($str:String,$space:String):String {
                return _lTrim($str, spaceStringToObject($space));
        }
        // StringUtils.rTrim
        // On supprime tous les caractères d'espacement
        // à la fin de la chaine de caractères. Une chaine
        // dont dont chaque caractère est un caractère d'espacement
        // lui est transmise.
        public static function rTrim($str:String,$space:String):String {
                return _rTrim($str, spaceStringToObject($space));
        }
        // StringUtils.trim
        // On supprime tous les caractères d'espacement
        // au début et à la fin de la chaine de caractères. Une chaine
        // dont dont chaque caractère est un caractère d'espacement
        // lui est transmise.
        public static function trim($str:String, $space:String):String {
                var sp:Object = spaceStringToObject($space);
                return _rTrim(_lTrim($str, sp), sp);
        }
        // StringUtils.stringToArray
        // Convertit une chaine de caractères en tableau
        // contenant un caractère par index.
        public static function stringToArray($str:String):Array {
                return $str.split("");
        }
        // StringUtils.arrayToString
        // Transforme un tableau en chaine de caractère
        // constituée de la concatenation de ses éléments.
        public static function arrayToString($ar:Array):String {
                return "" + $ar.join("");
        }
        // StringUtils.reverse
        // Inverse l'ordre des caractères d'une chaine
        public static function reverse($str:String):String {
                // Transforme la chaine en tableau.
                var ar:Array = $str.split("");
                // Inverse le tableau
                ar.reverse();
                // Transforme le tableau inversé en chaine.
                return ar.join("");
        }
}

::Télécharger StringUtils.zip::