Nettoyage d'un script

bg62 Messages postés 23732 Date d'inscription   Statut Modérateur Dernière intervention   -  
prosthetiks Messages postés 1189 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je suis en train d'essayer de mettre à disposition quelques outils pour ' compter ' les mots et les caractères.
J'ai trouvé quelques 'sources', mais je suis une vraie bille en JavaScript !!!
D'où cette demande, car grand besoin d'aide !
1er problème:
Ce ' code ' que j'ai ici peut certainement être bien ' nettoyé ', puisque certaines fonctions en sont pas utilisées, mais ça aussi je ne sais pas faire ...
Je n'aurais besoin que d'afficher que:
- les mots et les caractères, avec les options suivantes: ignorer ou non les apostrophes, ignorer ou non les tirets, ignorer ou non les stopwords, compter les caractères avec ou sans les espaces.
Voici ce que j'ai trouvé:
function afficherCalcul() {
 longueur = count();
 $("#nb_mots").html(longueur);
 $("#temps_lecture").html(temps(longueur, "lecture"));
 $("#temps_frappe").html(temps(longueur, "frappe"));
 $("#temps_manuscrite").html(temps(longueur, "manuscrite"));
 $("#temps_elocution").html(temps(longueur, "elocution"))
}

function count() {
 text = $(".champ_count").val();
 text2 = text;
 if ($("#apostrophes").prop("checked")) {
  var e = new RegExp("[\\'\\']", "gi");
  text = text.replace(e, "")
 } else {
  var e = new RegExp("[\\'\\']", "gi");
  text = text.replace(e, " ")
 } if ($("#tiret").prop("checked")) {
  var e = new RegExp("[\\-]", "gi");
  text = text.replace(e, "")
 } else {
  var e = new RegExp("[\\-]", "gi");
  text = text.replace(e, " ")
 } if ($("#stop_word").prop("checked")) {
  var t;
  var n;
  var r;
  var i;
  var s = new Array("afin", "ainsi", "alors", "au", "aucuns", "aussi", "autre", "aux", "avant", "avec", "avoir", "bon", "ça", "car", "ce", "ceci", "cela", "celà", "ces", "c'est", "cet", "cette", "ceux", "chaque", "ci", "comme", "comment", "dans", "debut", "début", "dedans", "dehors", "depuis", "des", "deux", "devrait", "doit", "donc", "dos", "droite", "du", "d'un", "d'une", "egalement", "elle", "elles", "en", "encore", "ensuite", "es", "essai", "est", "et", "étaient", "étais", "était", "étant", "état", "etc", "ete", "été", "étée", "étées", "êtes", "étés", "étiez", "étions", "être", "eu", "eux", "fait", "faites", "fois", "font", "force", "fûmes", "furent", "fus", "fusse", "fussent", "fusses", "fussiez", "fussions", "fut", "fût", "fûtes", "grace", "grâce", "haut", "hors", "ici", "il", "ils", "ils4les", "je", "juste", "la", "là", "le", "les", "leur", "leurs", "ma", "maintenant", "mais", "meme", "même", "mes", "mieux", "mine", "moins", "mon", "mot", "ni", "nommés", "nos", "notre", "nous", "nouveaux", "ou", "où", "par", "parce", "parole", "pas", "personnes", "peu", "peut", "pièce", "plupart", "pour", "pourquoi", "quand", "que", "quel", "quelle", "quelles", "quels", "qui", "sa", "sans", "sera", "serai", "seraient", "serais", "serait", "seras", "serez", "seriez", "serions", "serons", "seront", "ses", "seulement", "si", "sien", "soi", "soient", "sois", "soit", "sommes", "son", "sont", "sous", "soyez", "soyons", "suis", "sujet", "sur", "ta", "tandis", "tellement", "tels", "tes", "ton", "tous", "tout", "toute", "toutes", "tres", "très", "trop", "tu", "un", "une", "valeur", "voie", "voient", "vont", "vos", "votre", "vous", "vu");
  for (i = 0; i < s.length; i++) {
   t = s[i];
   n = "^\\s*" + t + "\\s*$";
   n += "|^\\s*" + t + "\\s+";
   n += "|\\s+" + t + "\\s*$";
   n += "|\\s+" + t + "\\s+";
   r = new RegExp(n, "gi");
   text = text.replace(r, " ");
   text2 = text2.replace(r, " ")
  }
 }
 var o = new RegExp("[^\\w^àáâãäåçèéêëìíîïðòóôõöùúûüýÿ]", "gi");
 text = text.replace(o, " ");
 text = text.replace(/\s+/g, " ");
 text = $.trim(text);
 atext = text.split(" ");
 var o = new RegExp("(\r\n|\r|\n)", "g");
 text2 = text2.replace(o, "");
 text2 = $.trim(text2);
 if ($("#mot_cle").val() != "") {
  var u = $("#mot_cle").val();
  e = new RegExp("\\b" + u + "\\b", "g");
  var a = text.match(e);
  if (a) {
   $("#mot_cle_resultat").html(a.length)
  } else {
   $("#mot_cle_resultat").html("0")
  }
 }
 if ($("#mot_cle").val() == "" && $("#mot_cle_resultat").text() != "" || atext[atext.length - 1] == "") {
  $("#mot_cle_resultat").html("0")
 }
 if (atext[atext.length - 1] == "") {
  longueur = atext.length - 1
 } else {
  longueur = atext.length
 }
 var f = nbcaractere(false, text2);
 $("#nb_caracteres").html(nbcaractere(true, text2));
 $("#nb_caracteres_espace").html(f);
 var l = Math.ceil(f / 78);
 var c = Math.ceil(f / 41);
 $("#lignes_ordinateur").html(l);
 $("#lignes_papier").html(c);
 $("#pages_ordinateur").html(Math.ceil(l / 42));
 $("#pages_papier").html(Math.ceil(c / 31));
 return longueur
}

function nbcaractere(e, t) {
 if (!e) {
  t = t.replace(/\s+/g, "")
 }
 return t.length
}

function temps(e, t) {
 var n = 0;
 switch (t) {
 case "lecture":
  n = Math.ceil(e * 60 / 250);
  break;
 case "frappe":
  n = Math.ceil(e * 60 / 40);
  break;
 case "manuscrite":
  n = Math.ceil(e * 60 / 25);
  break;
 case "elocution":
  n = Math.ceil(e * 60 / 150);
  break
 }
 var r = n;
 var i = 0;
 var s = 0;
 if (r >= 60) {
  i = Math.floor(r / 60);
  r = r % 60
 }
 if (i >= 60) {
  s = Math.floor(i / 60);
  i = i % 60
 }
 if (s > 0) {
  return s + " h " + i + " min " + r + " s"
 }
 if (i > 0) {
  return i + " min " + r + " s"
 }
 if (r >= 0) {
  return r + " s"
 }
}
$(function () {
 $(".champ_count").keyup(function () {
  afficherCalcul()
 });
 $(".champ_count").change(function () {
  afficherCalcul()
 });
 $("#mot_cle").keyup(function () {
  afficherCalcul()
 });
 $("#mot_cle").change(function () {
  afficherCalcul()
 });
 $(".option").change(function () {
  afficherCalcul()
 })
})

Bon certes, il tourne, mais des lignes comme ' $("#temps_frappe").html(temps(longueur, "frappe")); ' me laissent supposer qu'il peut remplir d'autres fonctions, inutiles pour moi, et donc être plus qu'un peu nettoyé et allégé ...

second problème:
- une autre chose, à voir en second lieu:
- il ne donne pas " exactement " les mêmes résultats que celui-ci :
      <script>
function compter(lettres){
      formcontent=lettres.form.comptecarac.value
      lettres.form.montrernombre.value=formcontent.length
      }

      document.comptelettres.comptecarac.focus();
      </script> 

plus simple, apparemment, plus restreint aussi mais pour ce qui est du ' comptage ' des caractères pas normal non plus que les résultats soient différents !!!

Ce serait vraiment sympa d'arriver à me dépanner sur ce coup là, mais, attention, je l'ai dit, je suis une 'bille' ;)

GrandS merciS à l'avance.
bg


le 'www' est fait aussi pour communiquer, partager et échanger, non ?
merci d'avoir la politesse de répondre à ceux qui essaient de vous aider
A voir également:

1 réponse

prosthetiks Messages postés 1189 Date d'inscription   Statut Membre Dernière intervention   431
 
Hello,

Encore d'actualité ? Je peux mettre dessus ces prochains jours, ce soir j'ai pas le temps.
0