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 :)

9 réponses


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)

Weezy
Auteur

Merci pour vos réponse :)

@Advancid dans:

return !~mots.indexOf(mot.replace(/\W/g, "").toLowerCase())

que représenste 'mots'.indexOf()?

Weezy
Auteur

@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"

Weezy
Auteur

@Advancid lorsque j'exécute ton code je tombe pas sur le résultat voulu

Weezy
Auteur

En gros ton code ne fait rien, ca n'enlève pas les petits mots

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);