IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Retirer les accents [Sources]


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2004
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2004
    Messages : 528
    Par défaut Retirer les accents
    Bonjour à tous,

    Je souhaiterais savoirsi il y a une fonction qui permet de ne pas prendre en compte les accents?

    J'ai pensé utiliser replaceAll(), mais le problème (mais ce n'est pas vraiment un probleme) est que je dois TOUS mettre: éèàù mais aussi ëäïöüáéíúó ...
    ya pas quelque chose du genre: maChaine.removeAccent(); ?

    D'avance merci à tous
    PS: je fais pas ma soluce car sinon je vais devoir faire:
    replaceAll("é","e");
    replaceAll("è","e");
    ...
    Je vais avoir enromement de lignes, y a pas plus simple?

  2. #2
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Une petite classe à moi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    package rom.utilities;
     
    import java.lang.ref.SoftReference;
     
    /**
     * Cette classe n'est composée que de méthodes statiques, utiles pour certains traitements de
     * chaînes de caractères.
     * 
     * @author <a href="mailto:rom1v@yahoo.fr">Romain Vimont</a> (rom1v)
     */
    public final class StringUtilities {
     
    	/** Contient à l'indice (int)c - 192 la chaîne par lequel remplacer le caractère c. */
    	private static SoftReference<String[]> charMap;
     
    	/** Interdiction d'instancier. */
    	private StringUtilities() {}
     
    	/**
             * Nettoie la chaîne de caractères des caractères spéciaux (accents, etc...).
             * 
             * @param source
             *            Chaîne de caractères à nettoyer.
             * @return Chaîne de caractères nettoyée.
             * @throws NullPointerException
             *             si la chaîne source est {@code null}.
             */
    	public static String cleanSpecialCharacters(String source) {
    		if (source == null)
    			throw new NullPointerException();
     
    		String[] map = null;
     
    		StringBuilder builder = new StringBuilder();
    		for (char c : source.toCharArray()) {
    			if (c < 192 || c >= 256) {
    				/* Si le caractère n'est pas un caractère spécial, on l'ajoute tel quel. */
    				builder.append(c);
    			} else {
    				if (map == null) {
    					/*
    					 * Si le tableau n'est pas encore chargé dans la méthode, on le récupère en
    					 * mémoire.
    					 */
    					if (charMap != null)
    						map = charMap.get();
    					if (map == null) {
    						/* Si le tableau n'est pas disponible en mémoire, on le charge. */
    						map = buildCharMap();
    						charMap = new SoftReference<String[]>(map);
    					}
    				}
    				/*
    				 * On ajoute à la chaîne de caractère la chaîne qui doit remplacer le caractère
    				 * spécial.
    				 */
    				builder.append(map[c - 192]);
    			}
    		}
    		return new String(builder);
    	}
     
    	/**
             * Retourne une chaîne de caractères correspondant à la source dans laquelle les espaces de
             * début et de fin sont supprimés, et où les espaces consécutifs sont remplacés par un seul
             * espace.
             * <p>
             * Par exemple, {@code removeExtraSpaces("   a bcd  e f    g   ")} retourne {@code a bcd e f g}.
             * 
             * @param source
             *            Chaîne de caractère source.
             * @return Chaîne de caractères dans laquelle les espaces en trop ont été supprimés.
             * @throws NullPointerException
             *             si la source est {@code null}.
             */
    	public static String removeExtraSpaces(String source) {
    		if (source == null) {
    			throw new NullPointerException();
    		}
    		return source.trim().replaceAll("\\s{2,}", " ");
    	}
     
    	/**
             * Retourne la chaîne de caractères tronquée à {@code maxSize} caractères. Si la chaîne était
             * plus petite que {@code maxSize}, elle est renvoyée telle-quelle.
             * 
             * @param s
             *            Chaîne de caractères à tronquer.
             * @param maxSize
             *            Taille maximale de la chaîne à obtenir.
             * @return Chaîne de caractères tronquée.
             * @throws NullPointerException
             *             si la chaîne est {@code null}.
             * @throws IllegalArgumentException
             *             si la taille maximale n'est pas strictement positive.
             */
    	public static String getTruncatedString(String s, int maxSize) {
    		if (s == null) {
    			throw new NullPointerException();
    		}
    		if (maxSize <= 0) {
    			throw new IllegalArgumentException("La taille maximale doit être strictement positive : " + maxSize + ".");
    		}
     
    		String result;
     
    		int nameLength = s.length();
    		if (nameLength > maxSize)
    			result = s.substring(0, nameLength);
    		else
    			result = s;
     
    		return result;
    	}
     
    	/**
             * Construit le tableau de correspondance de remplacement.
             * 
             * @return Tableau de correspondance de remplacement.
             */
    	private static String[] buildCharMap() {
    		/* On retourne le tableau des correspondances des caractères 192 à 255. */
    		return new String[] { "A", "A", "A", "A", "A", "A", "AE", "C", "E", "E", "E", "E", "I", "I", "I", "I", "D", "N", "O", "O", "O", "O", "*", "0", "U", "U", "U", "U", "Y", "D", "B", "a", "a", "a", "a", "a", "a", "ae", "c", "e", "e", "e", "e", "i", "i", "i", "i", "o", "n", "o", "o", "o", "o", "o", "/", "0", "u", "u", "u", "u", "y", "D", "y" };
    	}
     
    }
    Il suffit d'appeler:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String cleaned = StringUtilities.cleanSpecialCharacters(source);

  3. #3
    Membre éclairé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2004
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2004
    Messages : 528
    Par défaut
    MERCI

    Ca m'a l'air plus qu'interessant !!!!

    Je dois donc utiliser cleanSpecialCharacters !
    Mais cette methode remplace t'elle les accent par les caracteres sans accents?
    donc le é devient e
    le è devient aussi e
    .... ?

    D'avance merci

  4. #4
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par Terminator
    Mais cette methode remplace t'elle les accent par les caracteres sans accents?
    oui

  5. #5
    Membre éclairé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2004
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2004
    Messages : 528
    Par défaut
    ok, je te remercie,

    je la teste de suite et je te vous tiens au courant

  6. #6
    Membre éclairé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2004
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2004
    Messages : 528
    Par défaut
    Juste une question: comment on l'utilise car "interdiction d'instancier"

    D'avance merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Retirer les accents dans une requête Hibernate_JPA2.0
    Par AMBENMAN dans le forum Java EE
    Réponses: 3
    Dernier message: 10/06/2013, 14h08
  2. [RegEx] Retirer les espaces doubles retire mes accents
    Par sabotage dans le forum Langage
    Réponses: 1
    Dernier message: 17/03/2009, 11h31
  3. Retirer les accents d'une chaine avec MySQL
    Par orus8 dans le forum Requêtes
    Réponses: 5
    Dernier message: 23/02/2006, 16h47
  4. Comment afficher les accent sous mysql v4.0.13
    Par buildozer dans le forum Requêtes
    Réponses: 2
    Dernier message: 17/06/2003, 09h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo