Bonjour,
Voila cela fait un moment que je bloque sur une partie de mon code.
Voici le problème:
je charge un fichier txt que je range dans une variable 'text':
var text = load('nuageMot4.txt');
Ensuite j'enléve tout les caractères spèciaux du texte contenu dans 'text' ( je les remplaces par une chaine vide):
var pattern = /((^|[^a-z0-9àáâãäåçèéêëìíîïðòóôõöùúûüýÿ]))/gi;
textWithoutSpecialChars = text.replace(pattern, " " );
ensuite je voudrais remplacer également tout les petits mots par une chaine vide, par exemple: je, tu, il, elle, nous, vous, ils, elles, me, ma, ça...
Mais pour cela, je voudrais faire appelle à un autre fichier txt contenant la liste des petits mots à remplacer et ensuite comparer le contenu de ce fichier avec la variable 'text'.
C'est sur cette dernière partie ou j'ai des difficultés.
Merci d'avance pour votre aide :)
Salut,
Ttx :
je,tu,il,elle,nous,vous,ils,elles // ici ta liste
JS :
var excluded_words = load('excluded_words.txt'), regex;
excluded_words = excluded_words.split(','); // Tu convertis ta String en Array
console.log(excluded_words);
excluded_words.forEach(function (word) {
regex = new RegExp(word, "g");
textWithoutSpecialChars = textWithoutSpecialChars .replace(word, '');
});
console.log(textWithoutSpecialChars);
Je n'ai pas testé, je te laisse faire tes propres essais.
@Advancid Voici mon code fonctionnel : https://jsfiddle.net/so30wy5j/2/ ;)
C'est pas du tout optimisé mais ça fait le taf :)
Hahaha p'tit c*n :P
J'ai fait ça à l'arrache, du coup je n'ai pas trop réfléchis. J'avoue que ton code fonctionne mieux (tu l'as pioché sur Stackoverflow ? :P)
Merci pour vos réponse :)
@Advancid dans:
return !~mots.indexOf(mot.replace(/\W/g, "").toLowerCase())
que représenste 'mots'.indexOf()?
@Advancid
/* On charge un tableau a partir du fichier 'smallWord.txt' */
var textSmallWord = load('texte/smallWord.txt').split(",");
var texte = "Je proposes que tu utilises ce code. Il marche bien!"
/* La fonction 'inclus' retourne true ou false selon la presence du mot dans le fichier */
function inclus(textSmallWord) {
return !~textSmallWord.indexOf(textSmallWord.replace(/\W/g, "").toLowerCase())
}
/* On transforme le texte en un tableau de mots on le filtre avec la fonction 'inclus'
et on le retransforme en texte */
texte = texte.split(" ").filter(inclus).join(" ")
alert (texte);
Cela m'afficher:
"Je Il " au lieu de "proposes utilises code marche bien"
Son code fonctionne parfaitement. Le problème vient du fait que tu as réutilisé le même nom de variable.
/* On charge un tableau a partir du fichier 'smallWord.txt' */
var textSmallWord = load('texte/smallWord.txt').split(",");
var texte = "Je proposes que tu utilises ce code. Il marche bien!"
/* La fonction 'inclus' retourne true ou false selon la presence du mot dans le fichier */
function inclus(m) {
return !~textSmallWord.indexOf(m.replace(/\W/g, "").toLowerCase())
}
/* On transforme le texte en un tableau de mots on le filtre avec la fonction 'inclus'
et on le retransforme en texte */
texte = texte.split(" ").filter(inclus).join(" ")
alert (texte);