SuperDevy
Messages postés842Date d'inscriptiondimanche 24 novembre 2002StatutMembreDernière intervention 2 juillet 2007
-
19 juin 2005 à 21:30
spidermario
Messages postés121Date d'inscriptionmercredi 26 octobre 2005StatutMembreDernière intervention14 mars 2009
-
8 mai 2006 à 17:40
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
spidermario
Messages postés121Date d'inscriptionmercredi 26 octobre 2005StatutMembreDernière intervention14 mars 20091 8 mai 2006 à 17:40
En faisant la fonction cherche_mot, tu as refait la fonction eregi() de PHP :)
SuperDevy
Messages postés842Date d'inscriptiondimanche 24 novembre 2002StatutMembreDernière intervention 2 juillet 2007 1 juil. 2005 à 08:22
Ca s'appelle la recherche dichotomique, mais comme tu le dis il faut une liste triée : ce qui n'est pas le cas ici.
crackter
Messages postés401Date d'inscriptionmercredi 12 novembre 2003StatutMembreDernière intervention31 janvier 2010 1 juil. 2005 à 02:19
La méthode de recherce la plus rapide à utiliser est (heuu désolé je sais pas comment la nommer :[ ) un tri de "position", c'est ce que j'ai utilisé pour mon jeu hyperlettre qui fait une recherche sur un dictionnaire...
ca peut ressembler à ca en codé :
trouve=false;
position=(mini+maxi)/2; //mini et maxi sont les positions bornes de la liste
tant que (not trouve & position<maxi & position>mini) {
si on a trouvé le mot alors
trouve=true;
si on est en position "inférieur" alors
maxi = position
si on est en position "supérieur" alors
mini = position
position = (maxi+mini)/2
}
Bien évidemment faut une liste triée.
Il est 2h20 donc je sais même pas en fait si mon commentaire est justifié quant à ta source... désolé lol je vais aller me pieuter :).
bonne soirée ou bonne journée =).
SuperDevy
Messages postés842Date d'inscriptiondimanche 24 novembre 2002StatutMembreDernière intervention 2 juillet 2007 19 juin 2005 à 23:52
Sinon, tu peux faire le split avec les espaces comme séparateur, puis supprimer toutes les cases vides du tableau :
function division (phrase) {
var particules = phrase.split(' ');
var mots = new Array();
for (var i=0; i<particules.length; i++) {
if (particules[i]!='') mots.push(particules[i]);
}
return mots;
}
manoloz
Messages postés26Date d'inscriptionmardi 13 avril 2004StatutMembreDernière intervention27 septembre 2006 19 juin 2005 à 23:25
merci pour le conseil, si tu en as beaucoup comme ça reviens de temps en temps car je risque encore de sortir quelque chose de tordu du genre inventer ma propre fonction de tri alors qu'il y'en a déjà
est-ce que la fonction String.split peut considérer un séparateur variable? par exemple il se peut que les mots soient séparés des fois par un espace, d fois par des espaces de 10 km...!!!! ça dépend de l'utilisateur (il é pa toujours très malin)
SuperDevy
Messages postés842Date d'inscriptiondimanche 24 novembre 2002StatutMembreDernière intervention 2 juillet 2007 19 juin 2005 à 21:30
La fonction de recherche particulaire peut être condensée :
function cherche_mot(mot, string) {
return (string.toLowerCase().indexOf(mot.toLowerCase()) != -1)
}
Pour ce qui est de la recherche de plusieur mots, tu fais plusieurs fois toLowerCase() sur la même chaîne (c'est assez lourd comme méthode) :
function cherche_groupe(groupe, string) {
var i 0, n groupe.length;
var string = new String(string.toLowerCase());
var result = false;
while (i<n && !result) {
result = (string.indexOf(groupe[i].toLowerCase()) != -1);
i++;
}
return result;
}
Pour diviser la phrase en mots, il te suffit d'utiliser String.split('separateur')
8 mai 2006 à 17:40
1 juil. 2005 à 08:22
1 juil. 2005 à 02:19
ca peut ressembler à ca en codé :
trouve=false;
position=(mini+maxi)/2; //mini et maxi sont les positions bornes de la liste
tant que (not trouve & position<maxi & position>mini) {
si on a trouvé le mot alors
trouve=true;
si on est en position "inférieur" alors
maxi = position
si on est en position "supérieur" alors
mini = position
position = (maxi+mini)/2
}
Bien évidemment faut une liste triée.
Il est 2h20 donc je sais même pas en fait si mon commentaire est justifié quant à ta source... désolé lol je vais aller me pieuter :).
bonne soirée ou bonne journée =).
19 juin 2005 à 23:52
http://wiki.media-box.net/documentation/flash/string/split
Sinon, tu peux faire le split avec les espaces comme séparateur, puis supprimer toutes les cases vides du tableau :
function division (phrase) {
var particules = phrase.split(' ');
var mots = new Array();
for (var i=0; i<particules.length; i++) {
if (particules[i]!='') mots.push(particules[i]);
}
return mots;
}
19 juin 2005 à 23:25
est-ce que la fonction String.split peut considérer un séparateur variable? par exemple il se peut que les mots soient séparés des fois par un espace, d fois par des espaces de 10 km...!!!! ça dépend de l'utilisateur (il é pa toujours très malin)
19 juin 2005 à 21:30
La fonction de recherche particulaire peut être condensée :
function cherche_mot(mot, string) {
return (string.toLowerCase().indexOf(mot.toLowerCase()) != -1)
}
Pour ce qui est de la recherche de plusieur mots, tu fais plusieurs fois toLowerCase() sur la même chaîne (c'est assez lourd comme méthode) :
function cherche_groupe(groupe, string) {
var i 0, n groupe.length;
var string = new String(string.toLowerCase());
var result = false;
while (i<n && !result) {
result = (string.indexOf(groupe[i].toLowerCase()) != -1);
i++;
}
return result;
}
Pour diviser la phrase en mots, il te suffit d'utiliser String.split('separateur')