didoux95
Messages postés845Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention 1 août 2017
-
18 août 2007 à 18:00
didoux95
Messages postés845Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention 1 août 2017
-
20 août 2007 à 11:52
Bonjour à tous.
j'ai trouvé, sur internet, une méthode permettant de trouver un mot présent dans une phrase (ici, un texte relativement long).
je ne parviens pas à modifier le code pour qu'il puisse trouver un mot avec, à la suite de ce mot, une suite de chiffres non défini et "ilimité". c'est à dire que pour le moment le code me permet de trouver "qqc" dans un texte et je veux qu'il puisse trouver "qqc1" ou encore "qq123..1" par exemple.
didoux95
Messages postés845Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention 1 août 20172 20 août 2007 à 11:52
Bonjour a tous.
j'ai finalement trouvé un compris.
voila le code (si ca interresse certain):
public void analyser () {
//Les commandes et les couleurs qui leurs sont attribuées
Color[] couleurs = {new Color(195, 0, 195), new Color(195, 0, 195), new Color(195, 0, 195), new Color(195, 0, 195), new Color(195, 0, 195), new Color(195, 0, 195), new Color(195, 0, 195), new Color(195, 0, 195), new Color(195, 0, 195), new Color(195, 0, 195), new Color(105, 130, 235), new Color(255, 255, 0), new Color(255, 255, 0), new Color(145, 70, 0), new Color(255, 70, 70), new Color(255, 150, 40)};
String[] commandes = {"X", "Y", "Z", "A", "B", "C", "I", "J", "K", "R", "M", "F", "S", "T", "G", "%"};
//On passe chaque commande en revu
for (int a=0; a<commandes.length; a++) {
//La commande en cours
String cmd = commandes[a];
//La couleur qui correspond à la commande
Color couleur = couleurs[a];
//Dernière positon valide
int lastIndex = 0;
//On cherche dans le texte tous les endroits où il y a la valeur contenu par cmd
while ((lastIndex = this.getText().indexOf(cmd, lastIndex))!= -1) {
//Fin du mot (de la commande)
int endIndex = lastIndex + 1;
//Pour savoir si la commande est correcte
boolean valide = false;
//Suivant le type de commande la valeur numérique n'est pas la même // (> 9 Nombre entier) (< 9 Nombre décimale)
if (a > 9) {
//Tant qu'il y a des chiffres
boolean ok = true;
while (ok) {
//Si la commande est valide, on la colore
if (valide) {
//On colore la commande
}
lastIndex = endIndex;
}
}
}
le code fonctionne, il ne me reste que quelques modifs à faire (detetcté une commande même quand l'argument est un chiffre car tant qu'il n'y a pas denombre, ca ne colore rien).
amundain
Messages postés110Date d'inscriptionmercredi 28 mars 2007StatutMembreDernière intervention28 août 20121 18 août 2007 à 18:18
Salut,
Il existe une méthode startsWith(), il me semble, dans la classe String, peut-être peux-tu paraméter ton code pour qu'il trouve le mot commençant par ce que tu cherches, et qu'il calcule la longuer de mot à partir de ça ?
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013129 18 août 2007 à 19:26
Hum, il me semble qu'on t'a déjà dit de regarder du côté des expressions régulières... alors pourquoi tu ne creuse pas cette piste et tu t'obstine à poser les mêmes questions ?
didoux95
Messages postés845Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention 1 août 20172 18 août 2007 à 22:25
Bonsoir.
c'est pas que je m'obstine sur une autre piste mais je n'arrive pas à utiliser les regexp (du moins à récupéré et colorer la chaine trouvée). Si vous êtes d'accord pour m'expliquer, il n'y a pas de problème. En attendant, il y a aussi cette solution qui colorie "directement" le texte.