Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1453 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Détection de smiley avec une expression régulière [Résolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Détection de smiley avec une expression régulière [Résolu]

n°779534
Mudknot
Posté le 27-06-2004 à 13:41:46  profilanswer
 

Bonjour,
 
Je souhaite remplacer toutes les occurences des smileys se trouvant dans un texte (style ": )" ) avec la methode replaceAll
 
Or, je n'arrive pas à detecter les caractères parenthèse ouvrante ou fermante. ReplaceAll les detecte comme partie inégrante de l'expression régulière et non comme caractères a trouver.
 
Si vous avez une solution, je suis preneur  ;)  
 
merci d'avance


Message édité par Mudknot le 29-06-2004 à 19:07:20
mood
Publicité
Posté le 27-06-2004 à 13:41:46  profilanswer
 

n°780796
TBone
Pouet.
Posté le 28-06-2004 à 17:34:42  profilanswer
 

il faut les échaper car ce sont des caractères particuliers comme tu le soulignes. \ devrait t'aider


---------------
As the plane took off, the pilot turned to the co-pilot and said, “Have you ever flown solo?” Co-pilot: No. Typically I fly much higher than this.
n°780821
Jubijub
Parce que je le VD bien
Posté le 28-06-2004 à 17:48:48  profilanswer
 

un smiley c'est aussi ca peut etre \W{2,3}  
cad une suite de 2 ou 3 caractères alphanumériques...
 
:) passe
8-) passe aussi
<8-) passe pas :D ...
 
g testé ça passe... avec une regexp..
 
sinon il faut effectivement échaper les caractères...
 
PS : c pas top, :p passe pas...je cherche


Message édité par Jubijub le 28-06-2004 à 17:55:33

---------------
Jubi Photos : Flickr - 500px
n°780833
Jubijub
Parce que je le VD bien
Posté le 28-06-2004 à 17:56:01  profilanswer
 

ce qui est chiant c que y'a trop de combinaisons possibles....j'étais pas loin mais g du mal pour spécifier qu'on accepte les caractères alphanumérique que si il en a pas plus de 2 de suite...


Message édité par Jubijub le 28-06-2004 à 17:59:44

---------------
Jubi Photos : Flickr - 500px
n°780995
veryfree
Posté le 28-06-2004 à 23:30:31  profilanswer
 

tu peux utiliser ca:

Code :
  1. public static String replaceAll(String msg)
  2.  {
  3.  StringBuffer result=new StringBuffer();
  4.  int cpt=0;
  5.  for(int i=0;i<msg.length();i++)
  6.  {
  7.   char c=msg.charAt(i);
  8.   result.append(c);
  9.   switch(c)
  10.   {
  11.    case '[':
  12.    case ']':
  13.    case '\'':
  14.    case '\\':
  15.    case '(':
  16.    case '-':
  17.    case ')':
  18.    case '|':
  19.    case '+':
  20.    case '.':
  21.    case '{':
  22.    case '*':
  23.    case '$':
  24.    case '?':result.insert(i+cpt,'\\'); cpt++;break;
  25.   }
  26.  }
  27.  return result.toString();
  28.  }


 
ca doit pouvoir etre complété
 

n°781041
Mudknot
Posté le 29-06-2004 à 01:55:01  profilanswer
 

Merci de vos réponses
 
J'ai reussi a faire ce que je voulais avec une fonction perso, mais j'arrive toujours pas a les détecter avec une expression reguliere et replaceAll, meme en mettant '\' devant ca ne marche pas


Message édité par Mudknot le 29-06-2004 à 02:10:32
n°781042
Mudknot
Posté le 29-06-2004 à 01:57:09  profilanswer
 

Sinon je ne veux pas retrouver tous les smiley du fichier texte mais une seul genre ": )" car j'ai une liste des codes de smiley et je souhaitais les remplacer un par un en bouclant sur cette liste

n°781231
Jubijub
Parce que je le VD bien
Posté le 29-06-2004 à 11:13:25  profilanswer
 

be donne la liste, on doit pouvoir te sortir la regexp qui détecte cette liste...


---------------
Jubi Photos : Flickr - 500px
n°781562
Mudknot
Posté le 29-06-2004 à 15:30:44  profilanswer
 

Nan c'est pas ca
 
J'ai une liste avec tous les code de mes smileys, genre :

Code :
  1. :)
  2. :(
  3. :/
  4. :D
  5. :p
  6. ...


 
Et ma boucle ressemble à ca :
 

Code :
  1. String texteATester = ...;
  2. for(int i;i<tailleListe;i++){
  3.      texteATester = texteATester.replaceAll(liste[i],texteATester);
  4. }


 
Que dois-je mettre dans ma liste à la place de ": )" par exemple, pour que le replaceAll fonctionne?

n°781623
the real m​oins moins
Posté le 29-06-2004 à 16:32:38  profilanswer
 

\ , bordel


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
mood
Publicité
Posté le 29-06-2004 à 16:32:38  profilanswer
 

n°781627
lorill
Posté le 29-06-2004 à 16:33:27  profilanswer
 

":\\)"

n°781630
schnapsman​n
Zaford Beeblefect
Posté le 29-06-2004 à 16:36:01  profilanswer
 

oui en java il faut escaper les back slashs pour qu'ils escapent bien dans une regexp, parce qu'ils sont eux mêmes des caractères d'échapement au niveau des fichiers source java


Message édité par schnapsmann le 29-06-2004 à 16:36:40

---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°781732
Mudknot
Posté le 29-06-2004 à 18:42:12  profilanswer
 

Merci lorill et schnapsmann, il faut bien faire un double escape  :jap:  
 
Merci 'the real moins moins' pour ta réponse sympathique mais néanmoins incomplète http://www.forum-auto.com/smileys/fleur.gif

n°781754
the real m​oins moins
Posté le 29-06-2004 à 19:37:21  profilanswer
 

[:icon12]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°781834
nraynaud
lol
Posté le 29-06-2004 à 22:08:57  profilanswer
 

Code :
  1. static {
  2.         putSmiley(":-)", "http://forum.hardware.fr/images/smile.gif" );
  3.         putSmiley(":)", "http://forum.hardware.fr/images/smile.gif" );
  4.         putSmiley("(:", "http://forum.hardware.fr/images/smile.gif" );
  5.         putSmiley(":o", "http://forum.hardware.fr/images/redface.gif" );
  6.         putSmiley(":(", "http://forum.hardware.fr/images/frown.gif" );
  7.         putSmiley(":-(", "http://forum.hardware.fr/images/frown.gif" );
  8.         putSmiley(" ):", "http://forum.hardware.fr/images/frown.gif" );
  9.         putSmiley(";-)", "http://forum.hardware.fr/images/wink.gif" );
  10.         putSmiley(";)", "http://forum.hardware.fr/images/wink.gif" );
  11.         putSmiley(":'(", "http://forum.hardware.fr/images/ohill.gif" );
  12.         putSmiley(":p", "http://forum.hardware.fr/images/tongue.gif" );
  13.         putSmiley(":-p", "http://forum.hardware.fr/images/tongue.gif" );
  14.         putSmiley(":P", "http://forum.hardware.fr/images/tongue.gif" );
  15.         putSmiley(":-P", "http://forum.hardware.fr/images/tongue.gif" );
  16.         putSmiley(":D", "http://forum.hardware.fr/images/biggrin.gif" );
  17.         putSmiley(":-D", "http://forum.hardware.fr/images/biggrin.gif" );
  18.     }


Code :
  1. public DecoratedText filter(DecoratedText message) {
  2.         string = message.getText();
  3.         index = 0;
  4.         Decoration deco = message.getToplevelDecoration();
  5.         try {
  6.             for (String[] pair = nextSmiley(); pair != null; pair = nextSmiley()) {
  7.                 //System.out.println("recognized : " + pair[0] + " length : " +
  8.                 // lengthSmiley);
  9.                 deco.insertDecoration(SmileyDecoration.getFactory(pair[0],
  10.                         pair[1]), startSmiley, lengthSmiley);
  11.             }
  12.             return message;
  13.         } catch (InvalidPositionException e) {
  14.             return message;
  15.         }
  16.     }
  17.     public String[] nextSmiley() {
  18.         LexicalTree.Seeker seeker = nativeSmilies.getSeeker();
  19.         for (; index < string.length(); index++) {
  20.             seeker.nextChar(string.charAt(index));
  21.             String[] pair = (String[]) seeker.getValue();
  22.             if (pair != null) {
  23.                 lengthSmiley = pair[0].length();
  24.                 startSmiley = index - lengthSmiley + 1;
  25.                 return pair;
  26.             }
  27.         }
  28.         return null;
  29.     }


Message édité par nraynaud le 29-06-2004 à 22:09:58

---------------
trainoo.com, c'est fini
n°781972
Mudknot
Posté le 30-06-2004 à 00:58:11  profilanswer
 

Merci :jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Détection de smiley avec une expression régulière [Résolu]

 

Sujets relatifs
[Résolu][RESOLU]HTML print : avoir l'entête du tableau au début de chaque page
[RESOLU]Comment changer "?page=qqch" autrement que par un lien ?[RESOLU PHP] Créer des comptes utilisateurs
[Résolu] CGI et upload de fichier[Résolu][JavaScript]Copy to ClipBoard
[Résolu][JavaScript]Probleme de Iframe + refresh[résolu] Page générée en x.y secondes : comment faire ?
[VBA Excel] Erreur 424 sur une requete sql Access dans excel [Resolu][Résolu] Votre avis SVP + need conseil/aide scrollbarre
Plus de sujets relatifs à : Détection de smiley avec une expression régulière [Résolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR