String to (string) int

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 876 fois - Téléchargée 16 fois

Contenu du snippet

Rien de bien méchant, mais c'est toujours utile de pouvoir avoir la valeur des caractères d'un string.

Comme je n'ai pas vu beaucoup de codes sur le sujet (et encore moins de code optimisé) alors que c'est souvent demandé dans les forums et bien voilà un code synthétique.

Cette méthode java est à intégrer dans votre code.

Source / Exemple :


//Simplement : 

        public String stringToInt(String text) {
        int c;//int's equivalent to char
        char s = ' ';//separator
        StringBuffer buff = new StringBuffer(3*text.length());//to safe memory - Limit gc requests
        for (int i = 0; i < text.length(); i++) {
            c = text.charAt(i);
            buff.append(Integer.toString(c)).append(s);
        }

        return buff.toString();
    }

//Plus lisible via un println() avec [@ indexe : 'caractère'=valeur] 

        public String stringToInt(String text) {
        int c;//int's equivalent to char
        char s = ' ';//separator
        StringBuffer buff = new StringBuffer(13*text.length());//to safe memory - Limit gc requests
        for (int i = 0; i < text.length(); i++) {
            c = text.charAt(i);
            buff.append('[').append('@').append(i).append(':').append('\'').append(text.charAt(i)).append('\'').append('=').append(Integer.toString(c)).append(']').append(s);
        }
        return buff.toString();
    }

A voir également

Ajouter un commentaire

Commentaires

Arto_8000
Messages postés
1051
Date d'inscription
lundi 7 mars 2005
Statut
Membre
Dernière intervention
13 juillet 2010
5 -
Tu serais mieux d'utiliser la classe StringBuilder au lieu de StringBuffer. La seule différence qui existe entre ces deux classes est que StringBuffer est synchronisé ce qui est un peu plus lent à l'exécution que sa version non-synchronisée StringBuilder. La seule raison d'utiliser StringBuffer est si le buffer est partagé par plusieurs threads.

Aussi, il faudrait que tu corriges le bout de code qui manque à la fin de la première fonction. Il manque un return et un "}".
maximelien
Messages postés
40
Date d'inscription
jeudi 22 janvier 2009
Statut
Membre
Dernière intervention
23 juin 2010
-
Merci pour tes remarques Arto.

J'ai corrigé la coquille.

Pour StringBuilder je ne connaissais pas, merci de m'en faire part. Apparemment c'est apparut à la v1.5 du J2SE. Pour ma part je programme surtout sur J2ME en ce moment (et en l'occurrence en multi-thread) donc j'ai surtout en tête les fonctions de bases de java puisque comme tu le sais, en J2ME, java est très allégé.

Ceci étant apparemment il n'y aurait juste qu'à remplacer StringBuffer par StringBuilder ? Donc :

Pour ceux qui utilisent une version ultérieur à la v1.5 et pour du non-multi-thread vous pouvez utiliser StringBuilder pour plus de rapidité.

Merci Arto
maximelien
Messages postés
40
Date d'inscription
jeudi 22 janvier 2009
Statut
Membre
Dernière intervention
23 juin 2010
-
*pardon v1.5 ou ultérieure
aze555666
Messages postés
208
Date d'inscription
mardi 13 avril 2004
Statut
Membre
Dernière intervention
26 janvier 2009
-
Quand je vois ceci :
StringBuffer buff = new StringBuffer(text.length());//to safe memory - Limit gc requests

Je me demande pourquoi tu initialise à cette longueur alors que tu sais qu'il en faudra beaucoup plus. Dans le premier exemple, chaque caractère de la chaine initiale donne dans la chaine finale 1 + (longueur de l'entier retourné lors du cast char -> int).
Dans la 2eme exemple c'est pire.
maximelien
Messages postés
40
Date d'inscription
jeudi 22 janvier 2009
Statut
Membre
Dernière intervention
23 juin 2010
-
Exacte AZE. la valeur n'est pas justifiée j'aurai du mettre soit rien soit la taille finale approximative. Mais dans quelle mesure cela alter la performance ? Tu penses qu'une allocation supplémentaire intempestive change la performance dans le cas d'un StringBuffer ? Sachant que d'après ce que j'ai vue l'allocation d'un StringBuffer se fait par tableaux de 100 chars. Donc la question que je me pose, techniquement que le tableau soit adressé au début ou à n'importe quel moment ca ne change rien !??

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (maximelien)