11550 sujets

JavaScript, DOM et API Web HTML5

J'avais pour but de transformer une string du genre :
FC_texte_34

en un objet du genre :
{
title : 'texte',
value : '34'
}

et si la derniere valeur n'existe pas gerne "FC_texte", on met ''

Il y a 3 méthodes :
1- faire un split

var str = "FC_texte_34";
var matches = str.split('_');
var obj = {
   title : matches[1],
   value : matches[2] || ''
}


2- Utiliser un match avec une regexp :

var str = "FC_texte_34"
var matches = str.match(/^FC_([a-zA-Z0-9]+)_?(\d+)?$/)
var obj = {
   title : matches[1],
   value : matches[2] || ''
}


Les 2 premières se ressembles assez
et maintenant la 3ème consistant à cumuler un eval et un str.replace

var str = "FC_texte_34";
var obj = eval(str.replace(/^FC_([a-zA-Z0-9]+)_?(\d+)?$/,'({title:"$1", value:"$2"})'));


Evidemment ce n'est pas très humain d'utiliser un eval pour ça. Mais des pbs de sécurité il ne risque pas vraiment d'en avoir puisqu'on passe par une regexp.
L'idée ici est juste pour l'exercice de style.
Le but avec un str.replace matché, est d'obtenir une string formatée JSon, et via un eval obtenir un objet
Modifié par Gatsu35 (25 Apr 2008 - 16:00)