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 12/02/2011, 16h55   #1
Futur Membre du Club
 
Inscription : avril 2003
Messages : 97
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 97
Points : 15
Points : 15
Par défaut récupérer une valeur avant de la modifier avec RegExp

Bonjour à tous,

Je voudrais remplacer tout les timestamps d'un text en date lisible. J'utilise la fonction regexs pour détecter les timestamps et les remplacer.

Code :
1
2
3
myRegex = new RegExp("[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]", 'gi');
text = text.replace(myregex, 'madateici');
this_text.textContent = text;
Donc cela fonctionne pour remplacer tout les timestamps mais comment récupérer le timestamp avant qu'il ne soient remplacer afin de remplacer chaque timestamp par sa propre date ?

Merci beaucoup
Shaban
yodark est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2011, 17h23   #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 yodark Voir le message
Donc cela fonctionne pour remplacer tout les timestamps mais comment récupérer le timestamp avant qu'il ne soient remplacer afin de remplacer chaque timestamp par sa propre date ?
!?

Sinon, en attendant de comprendre ta question ta regexp serait plus simple comme ça :
Code javascript :
1
2
var myRegexp = /[0-9]{10}/g;//ou bien
myRegexp = /\d{10}/g;
(et n'oublie pas de déclarer tes variables avec "var" pour éviter les soucis de portée de variable ^^)
__________________

...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, 17h46   #3
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 805
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 805
Points : 35 810
Points : 35 810
+1 Romain.

D'autre part :
Code :
1
2
myRegex = new RegExp("[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]", 'gi');
text = text.replace(myregex, 'madateici');
ne risque pas de fonctionner, JavaScript est sensible à la casse, donc myRegex != myregex.

Sinon, le second paramètre de replace peut être une fonction :
Code :
text = text.replace(myregex, function(timestamp){return new Date(timestamp).toLocaleString();});
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2011, 19h27   #4
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 847
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 847
Points : 1 344
Points : 1 344
Étant une vraie branque en expreg je ne vais pas trop m'avancer mais je crois que dans certains languages (php/ perl? ) ya les variables $1, $2 etc... pour récupérer ta valeur et la manipuler. Hélas je pense que ça n'existe pas sous javascript et que tu vas devoir oublier le replace expreg et devoir te faire une petite fonction qui opérera ton string de façon chirurgical avec des getPos et des subStr. ( enfin c'est pas la mort non plus, ça doit pouvoir ce faire en 2-3 lignes )
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2011, 19h34   #5
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 847
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 847
Points : 1 344
Points : 1 344
Ah si, apparement ça fonctiomne aussi en js.

Donc :

Edit:

Code :
text = text.replace(/(\d{10})/g,function(s){ return new Date(parseInt(s)); });


Edit2: ok, finalement j'ai réécris la même chose que Bovino.^^
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2011, 20h15   #6
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 847
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 847
Points : 1 344
Points : 1 344
Sinon pour mon histoire des $1, un exemple qui s'utilise sans fonction :

Code :
text = text.replace(/(\d{10})/g,"ceci est un timestamp : $1, ");
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 16h43   #7
Futur Membre du Club
 
Inscription : avril 2003
Messages : 97
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 97
Points : 15
Points : 15
Merci j'ai utilisé ca finalement :
Code :
1
2
text = text.replace(/(\d{10})/g,convertDate(RegExp.$1)); 
	this_text.textContent = text;
Ca marche sauf pour la première instance de timestamp que me revoie systématiquement 0
yodark est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 16h51   #8
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 847
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 847
Points : 1 344
Points : 1 344
Citation:
Envoyé par yodark Voir le message
Merci j'ai utilisé ca finalement :
Code :
1
2
text = text.replace(/(\d{10})/g,convertDate(RegExp.$1)); 
	this_text.textContent = text;
Ca marche sauf pour la première instance de timestamp que me revoie systématiquement 0
en gros la fonction convertDate dont tu ne nous donnes pas le code ne fonctionne pas ... on va avoir du mal à t'aider avec ça.
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h02.


 
 
 
 
Partenaires

Hébergement Web