Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/02/2011, 15h04   #1
Candidat au titre de Membre du Club
 
Inscription : mars 2004
Messages : 42
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mars 2004
Messages : 42
Points : 10
Points : 10
Par défaut Retourner valeur précise dans fichier texte

Bonjour à tous,

Je dispose d'un fichier texte sous la forme :

Citation:
nom1_prenom1||NOM1|PRENOM1|||U991|||
nom2_prenom2||NOM2|PRENOM2|||U917|||
En Javascript, je sais ouvrir ce fichier et le lire.

De plus, j'aimerais que ma fonction renvoie le texte inclu juste après le 6ème "pipe" (par exemple "U991" pour la 1ère ligne)

Comment faire pour que l'objet de lecture (FileSystemObject) ne lise que cet endroit spécifique ?

Merci par avance !
gazza est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 16h14   #2
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 572
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 572
Points : 4 073
Points : 4 073
Citation:
Envoyé par gazza Voir le message
En Javascript, je sais ouvrir ce fichier et le lire.
Tu fonctionnes dans un autre contexte qu'un navigateur ? (si oui, lequel ? ) ou bien dans IE avec un ActiveX ?
Citation:
Envoyé par gazza Voir le message
Comment faire pour que l'objet de lecture (FileSystemObject) ne lise que cet endroit spécifique ?
Préalablement et en attendant ta réponse, n'est-il pas plus simple de retirer la ligne puis de récupérer cette partie avec une petite Regexp ? Ca pourrait ressembler à :
Code javascript :
var partieVoulue = ligneComplete.match(/|||(.*)|||/)[1];
__________________

...pour les linguistes et les curieux >>> générateur de phrases aléatoires

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 16h57   #3
Candidat au titre de Membre du Club
 
Inscription : mars 2004
Messages : 42
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mars 2004
Messages : 42
Points : 10
Points : 10
Merci pour ta réponse.

En effet je fonctionne avec IE + ActiveX.

Je ne connais pas du tout le fonctionnement Regexp.

Par ailleurs, en plus de récupérer cette valeur, j'aimerais la remplacer.

Dans mon exemple :

Contenu du fichier au départ :
Citation:
nom1_prenom1||NOM1|PRENOM1|||U991|||
Contenu du fichier après modification :
Citation:
nom1_prenom1||NOM1|PRENOM1|||TOTO|||

Merci
gazza est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 17h07   #4
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
split() ?
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 17h41   #5
Candidat au titre de Membre du Club
 
Inscription : mars 2004
Messages : 42
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mars 2004
Messages : 42
Points : 10
Points : 10
Citation:
Envoyé par SpaceFrog Voir le message
split() ?
Mais encore ?
gazza est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 17h57   #6
Responsable JavaScript & AJAX

 
Avatar de vermine
 
Inscription : mars 2008
Messages : 2 686
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mars 2008
Messages : 2 686
Points : 5 768
Points : 5 768
SpaceFrog, un replace() suffirait, non ?
__________________
Elen Poukram - Isegoria - Sandawe
vermine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 21h45   #7
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 572
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 572
Points : 4 073
Points : 4 073
Tiens d'ailleurs je me rends compte que j'avais oublié d'échapper les "|"

Donc pour le remplacement ça donnerait :
Code javascript :
1
2
3
4
5
6
7
8
9
10
var ancienneValeur = "nom1_prenom1||NOM1|PRENOM1|||U991|||";
var nouvelleValeur;
// la solution à base de Regexp :
nouvelleValeur = ancienneValeur.replace(/\|\|\|(.*)\|\|\|/, "|||TOTO|||");
alert(nouvelleValeur);
// la solution à base de split() proposée par SF :
var valsplit = ancienneValeur.split("|||");
valsplit[1] = "TOTO";
nouvelleValeur = valsplit.join("|||");
alert(nouvelleValeur);
Les deux fonctionnent
__________________

...pour les linguistes et les curieux >>> générateur de phrases aléatoires

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2011, 10h05   #8
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 930
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 930
Points : 4 744
Points : 4 744
la méthode split(), préconisée par SpaceFrog me semble effectivement, bien suffisante
Code :
1
2
3
4
var sTmp = "nom1_prenom1||NOM1|PRENOM1|||U991|||";
var tab = sTmp.split('|'));
tab[6] = "NEW";
alert( tab.join('|'));
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2011, 11h46   #9
Responsable JavaScript & AJAX

 
Avatar de vermine
 
Inscription : mars 2008
Messages : 2 686
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mars 2008
Messages : 2 686
Points : 5 768
Points : 5 768
Pour peu qu'on sache avec certitude le nombre de valeurs à différencier dans la chaine.
__________________
Elen Poukram - Isegoria - Sandawe
vermine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2011, 12h10   #10
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 930
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 930
Points : 4 744
Points : 4 744
Citation:
Envoyé par vermine Voir le message
Pour peu qu'on sache avec certitude le nombre de valeurs à différencier dans la chaine.
cela va sans dire mais mieux en l'écrivant !
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 09h15   #11
Candidat au titre de Membre du Club
 
Inscription : mars 2004
Messages : 42
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mars 2004
Messages : 42
Points : 10
Points : 10
Messieurs (enfin, je présume ),

Merci pour vos réponses très pertinentes.

Cependant, mon problème n'est finalement pas totalement résolu.

En effet (pour être plus complet), à chaque ligne :
1) je lis la valeur tab[3]
2) je dois insérer cette valeur dans tab[6] (et "écraser" l'ancienne valeur)

Mon fichier contient de nombreuses lignes, toutes ne seront pas modifiées.

Or, les fonctions Write() ou WriteLine() me permettent d'écraser tout le contenu du fichier, ou bien d'ajouter une ligne en fin de fichier.

Comment faire pour "attaquer" uniquement tab[6] (à chaque ligne nécessaire), sans devoir écraser/remplacer toute la ligne ?
gazza est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 10h59   #12
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
première remarque javascript n'est pas fait pour ecrire dans un fichier, cela ne peut être fait que dans une configuration locale hors web avec des activeX.

Ensuite un fichier texte n'est pas une base de données.
il te faut réécrire intégralement le fichier texte, tu ne peux pas juste remplacer un mot à un endroit du fichier, tu devras réécrire le fichier dans son intégralité.
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 15h37   #13
Candidat au titre de Membre du Club
 
Inscription : mars 2004
Messages : 42
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mars 2004
Messages : 42
Points : 10
Points : 10
Citation:
Envoyé par SpaceFrog Voir le message
il te faut réécrire intégralement le fichier texte, tu ne peux pas juste remplacer un mot à un endroit du fichier, tu devras réécrire le fichier dans son intégralité.
Effectivement, c'est donc ce que je fais : à mesure que je les parcoure, je stocke toutes les lignes dans un tableau global ; puis, d'un bloc, j'écris ce tableau dans le fichier.

Merci pour vos solutions
gazza est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h47.


 
 
 
 
Partenaires

Hébergement Web