IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Remplacement de chaîne inopportun


Sujet :

JavaScript

  1. #1
    Membre confirmé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 920
    Points : 606
    Points
    606
    Par défaut Remplacement de chaîne inopportun
    Bonsoir,

    soit une chaîne source
    ((((1 ou 2) et (3 ou 4)) ou ((1 et 4) et (5 et 4))))

    Soit le code javascript suivant


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    tab_numero  = new Array( 1,2,3,4,5);
    tab_cleunik = new Array(-110447,-110449,-110448,10001967,10001966);
    tab_clair = new Array("Tags de l'image à renseigner","Image indisponible","Image disponible","2° test français","Test fraançais");
    var cr="";
    var anomalie=false;
    var chaine_clair="";
    function pf_verifie(){
    	anomalie=false;
    	var source=fa_gid("tb_selection").value;
    	pf_ExtraireNom(source);
    }
    function pf_ExtraireNom(chaine) {
      var exp=new RegExp("et|ou|\\(|\\)|or|and| +", "g");
      chaine_clair=chaine;
      var tabNom=chaine.split(exp);
      var bajouter=true;
      TabNum=new Array;
      Tabclair=new Array;
      Tabcleunik=new Array;
      var j=-1;
      cr+=tabNom+"\n";
      if (tabNom==null) {alert("Problème dans l'expression !");} 
      else {
        for (var i=0;i<tabNom.length;i++){
        	if(tabNom[i]!="" && pf_estNumérique(tabNom[i])){
        		bajouter=true;
        		for (var l=0;l<TabNum.length;l++){
    	    		if (TabNum[l]==tabNom[i]){
    	    			bajouter=false;
    	    		}
    	    	};
    	    	if (bajouter==true){
    	    		j++;
    	    		TabNum[j]=tabNom[i];
    	    	};
        	} else {
        		if(tabNom[i]==""){
        			//	raf
        		} else {
    	    		anomalie=true;
        		}
        	}
        }
        TabNum.sort(pf_compare_entiers);
         for (var l=0;l<TabNum.length;l++){
         	bajouter=false;
         	for (var i=0;i<tab_numero.length;i++){
     
    			if (TabNum[l]==tab_numero[i]){
    				Tabclair[l]=tab_clair[i];
    				chaine_clair = chaine_clair.split(TabNum[l]).join('"'+Tabclair[l]+'"');
    				bajouter=true;
    			}
    		};
    		if(bajouter==false){
    			Tabclair[l]="??!!";
    			chaine_clair = chaine_clair.split(TabNum[l]).join('"'+Tabclair[l]+'"');
    			anomalie=true;
    			cr+=TabNum[l]+" introuvable !!"+"\n";
    		}
    	};
        cr+="\n"+"Nombre différents trouvés : " + TabNum.length + "\n"+TabNum;
    	}
    }
    function pf_compare_entiers(b, a) {
      	//	Pour trier du plus grand au plus petit : compare_entiers_func(b, a)
      	//	Pour trier du plus petit au plus grand : compare_entiers_func(a, b)
      	return parseInt(a) - parseInt(b)
    }
    function pf_estNumérique(val) {
    	//return true;
        if (isNaN(parseFloat(val))) {
              return false;
         }
         return true;
    }
    Lorsque je n'ai pas de chiffre dans tab_clair
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab_clair = new Array("Tags de l'image à renseigner","Image indisponible","Image disponible","Deuxième test français","Test fraançais");
    pf_ExtraireNom(source)
    mon remplacement "en clair" des informations de la source fonctionnent bien

    (((("Tags de l'image à renseigner" ou "Image indisponible") et ("Image disponible" ou "Deuxième test français")) ou (("Tags de l'image à renseigner" et "Deuxième test français") et ("Test fraançais" et "Deuxième test français"))))
    Par contre, dès que j'ai un chiffre dans le tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab_clair = new Array("Tags de l'image à renseigner","Image indisponible","Image disponible","2° test français","Test fraançais");
    mon remplacement ne fonctionne plus
    car il me vire le "2" de "2°"
    (((("Tags de l'image à renseigner" ou "Image indisponible") et ("Image disponible" ou ""Image indisponible"° test français")) ou (("Tags de l'image à renseigner" et ""Image indisponible"° test français") et ("Test fraançais" et ""Image indisponible"° test français"))))
    Comment puis-je faire ?
    Cordialement,
    Christophe Charron

  2. #2
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    à la ligne 50, tu peux spécifier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tabclair[l]=String(tab_clair[i]);
    à part ça, je trouve que tu utilises des noms de variables très proches les uns des autres!

  3. #3
    Membre confirmé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 920
    Points : 606
    Points
    606
    Par défaut
    Merci pour la réponse, mais pour le coup, cela ne me remplace plus rien du tout.
    Cordialement,
    Christophe Charron

  4. #4
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    étrange

  5. #5
    Membre confirmé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 920
    Points : 606
    Points
    606
    Par défaut
    Oui, étrange ...
    Alors j'ai continué à chercher et j'en suis arrivé à faire un tableau associatif :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var tab_numero_clair = { 4:"2° test français",3:"Image disponible",2:"Image indisponible",1:"Tags de l'image à renseigner",5:"Test fraançais"};
    et la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function pf_remplace_en_clair(chaine){
    	return chaine.replace(/(\w+)/g, function(s, key) {
       return tab_numero_clair[key] || s;
    });
    me renvoie bien un résultat pertinent
    Cordialement,
    Christophe Charron

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Remplacer une chaîne de caractères dans une base de données
    Par Furius dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 27/11/2013, 21h06
  2. [Tableaux] Problème avec remplacement dans chaîne
    Par Baptiste Wicht dans le forum Langage
    Réponses: 5
    Dernier message: 13/07/2006, 10h04
  3. [RegEx] Remplacer une chaîne avec preg_replace
    Par GregPeck dans le forum Langage
    Réponses: 3
    Dernier message: 08/12/2005, 12h21
  4. Remplacer une chaîne de caractères dans une base
    Par Furius dans le forum Requêtes
    Réponses: 4
    Dernier message: 19/10/2005, 23h03
  5. [D6] Comment remplacer des chaînes dans un fichier ?
    Par fabien25 dans le forum Langage
    Réponses: 4
    Dernier message: 15/06/2005, 13h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo