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

Langage Java Discussion :

retrouver une string dans un texte malgré une différence d'un caractère


Sujet :

Langage Java

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Mars 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 83
    Points : 89
    Points
    89
    Par défaut retrouver une string dans un texte malgré une différence d'un caractère
    Salut

    J'essaie de trouver la solution la plus performante possible pour le problème suivant:

    J'ai un texte dont je dois remplacer certaines parties. J'ai une méthode qui prend en entrée les extraits à remplacer et les chaines de caractères par quoi ils doivent être remplacés.

    Mon soucis c'est que parfois les extraits à remplacer ne collent pas parfaitement au texte original. Par exemple, on me donne l'extrait suivant :

    ...la Communauté européenne, ou dans un Etat partie à l'accord sur l'Espace économique européen...
    alors que dans le texte original, Etat es écrit État.

    Habituellement j'utilise juste la méthode contains() pour vérifier si l'extrait est bien présent mais avec ce type d'erreur, je ne sais pas trop comment procéder.

    Découper mon extrait en un tableau de lettres et essayer de trouver la correspondance dans le texte en comptant les différences n'est peut être pas ce qu'il y a de plus optimal.

    Auriez-vous une idée?

    Merci

  2. #2
    Membre habitué Avatar de domiq44
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 301
    Points : 135
    Points
    135
    Par défaut
    Bonjour,

    Regarde ici, un exemple SOUNDEX qui fonctionne pour le français :

    http://dominiquemaniez.developpez.com/soundex/

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 557
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 557
    Points : 21 616
    Points
    21 616
    Par défaut
    Moi je dis que le plus simple c'est de remplacer Etat par ce qu'on veut et État aussi par la même chose.
    Une égalité approximative ne fait que compliquer le problème, qui n'en a pas besoin.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre expert

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2012
    Messages
    612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2012
    Messages : 612
    Points : 3 066
    Points
    3 066
    Par défaut
    Vous pouvez également regarder du côté de la distance de Levenshtein et de la distance de Hamming en complément du SOUNDEX (typiquement selon si vous voulez tester davantage la faute d'orthographe ou la faute de frappe).
    Par contre cela peut effectivement vite devenir très complexe.

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2012
    Messages : 56
    Points : 84
    Points
    84
    Par défaut
    Bonjour,

    Si ton problème est uniquement du au fait qu'il y ait des majuscules et/ou des accents, pas besoin de "réinventer la roue", utilise String.replaceAll et String.toLowerCase avant de faire le remplacement.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.out.println("État".replaceAll("É", "E").toLowerCase());
    En sortie tu auras "etat" !

    Après, si c'est plus complexe, les liens cités au-dessus devraient surement t'aider

    Bon courage

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Collégien
    Inscrit en
    Juin 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Collégien
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2012
    Messages : 4
    Points : 8
    Points
    8
    Par défaut
    Tu pourrais essayer comme cela.

    1. Crée une copie du texte, sans accent ni majuscule.
    2. Repères les passages a modifier grâce a cette copie.
    3. Corrige le texte originale.


    Il y a un post qui explique la manière de supprimer les accents.

    Cela risque de prendre du temps ...

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/11/2014, 16h44
  2. Comment inserer une image dans le texte d'une réponse
    Par dde63 dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 3
    Dernier message: 28/03/2014, 17h36
  3. Recherche d'une String dans les valeurs d'une HashMap
    Par 4rocky4 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 04/05/2011, 15h24
  4. Réponses: 2
    Dernier message: 23/05/2010, 12h45
  5. Copier le contenu texte d'une cellule dans un string
    Par C.R.E.A.M dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/10/2008, 15h35

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