Nettoyage d'un script

Fermé
bg62 Messages postés 23590 Date d'inscription samedi 22 octobre 2005 Statut Modérateur Dernière intervention 15 avril 2024 - 10 avril 2014 à 08:32
prosthetiks Messages postés 1189 Date d'inscription dimanche 7 octobre 2007 Statut Membre Dernière intervention 12 juin 2020 - 26 oct. 2014 à 00:57
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 dimanche 7 octobre 2007 Statut Membre Dernière intervention 12 juin 2020 431
26 oct. 2014 à 00:57
Hello,

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