Javascript remplace les valeurs dans une chaîne

Je suis en train d'encadrer une chaîne JavaScript comme suit selon mes besoins:

var empDetails= "ID=" + id + ";" + "Name=XYZ" + ";" + "Address=ABC"; // id is autoincremented like 1,2,3 and so on. if (sessionStorage.getItem('empDet') === null) { sessionStorage.setItem('empDet', empDetails); } else { var empDets= sessionStorage.getItem('empDet'); var pResult = empDets; if (pResult.length > 0) { var ptotalEmp= empDets.toString().concat(';' + empDetails.toString()); sessionStorage.setItem('empDet', ptotalEmp); } } 

Maintenant, ce que j'ai besoin, je vais fournir une option pour éditer les détails suivants si l'utilisateur a sélectionné un identifiant et s'il change quelque chose en relation avec le Name and Address je dois mettre à jour et stocker. Est-ce que quelqu'un peut m'aider?

Vous pouvez mémoriser un objet qui, je pense, est meilleur que le traitement des chaînes. Si vous avez un objet comme:

 var user = { id: 1, name: "ABC", address: "DEF" }; 

Vous pouvez le caler avec JSON.stringify pour le stocker sur le stockage local. Ensuite, récupérez-le en utilisant JSON.parse :

 sessionStorage.setItem('user', JSON.stringify(user)); var u = JSON.parse(sessionStorage.getItem('user')); 

Maintenant, utilisez-le comme objet:

 u.name = "Foo"; u.address = "Bar"; 

Regardez-le sur Fiddle .

Soit dit en passant, vous pouvez facilement utiliser une fonction pour cela.

Pour cette meilleure façon, c'est que vous pouvez utiliser un autre personnage dans l'endroit où vous concattez vos nouveaux empDetails avec ceux existants.

Par exemple. Vous pouvez le modifier comme var ptotalEmp= empDets.toString().concat('|' + empDetails.toString()); Dans le code ci-dessous …

 if (sessionStorage.getItem('empDet') === null) { sessionStorage.setItem('empDet', empDetails); } else { var empDets= sessionStorage.getItem('empDet'); var pResult = empDets; if (pResult.length > 0) { var ptotalEmp= empDets.toString().concat('|' + empDetails.toString()); sessionStorage.setItem('empDet', ptotalEmp); } } 

De sorte que maintenant vous pouvez cracher chaque détail de l'empêchement avec '|' Symbole et ensuite obtenir les détails, le mettre à jour et le stocker.

Que diriez-vous :

 var empDetails= "ID=" + id + ";" + "Name=XYZ" + ";" + "Address=ABC"; function updateDetails(str,name,addr) { var reg = /ID=(\d+);Name=(.*?);Address=(.*?)$/; var fin = reg.exec(d); return "ID="+fin[1]+";"+"Name="+(name?name:fin[2])+";"+"Address="+(addr?addr:fin[3])+";"; } updateDetails(empDetails,"replacement"); 

D'accord, faites-le! J'ai créé 3 fonctions pour configurer, obtenir et effacer cet élément de stockage de session particulier.

Voici le code:

 function setValue(){ var id = document.getElementById("id"), name = document.getElementById("name"), address = document.getElementById("address"), item = "ID=" + id.value + ";NAME=" + name.value + ";ADDRESS=" + address.value; if(sessionStorage.getItem('empDet')){ var existing = getValue().split("||"), repaced = false; for(var i = 0; i<existing.length; i++){ if(existing[i].split(";")[0].split("=")[1] == id.value){ existing[i] = item; repaced = true; } } item = repaced ? existing : existing + "||" + item; } sessionStorage.setItem('empDet', item); id.value = name.value = address.value = ""; } function getValue(cry){ var existing = sessionStorage.getItem('empDet'); if(cry){ alert(existing); } return existing; } function clearValue(){ sessionStorage.removeItem('empDet'); } 

Démo de travail: http://jsfiddle.net/ashishanexpert/hu2V3/1/

Vous pouvez le personnaliser selon vos besoins.

=================== EDIT ===================

J'ai eu une suggestion dans un commentaire selon lequel jouer avec l'objet JSON vaut mieux que de jouer avec String, ce qui est vraiment utile. Donc, a mis à jour le code un peu et maintenant il est basé sur JSON.

 function setValue(){ var id = document.getElementById("id"), name = document.getElementById("name"), address = document.getElementById("address"), item = { ID : id.value, NAME : name.value, ADDRESS : address.value }, allTogether = [], repaced = false; if(sessionStorage.getItem('empDet')){ allTogether = JSON.parse(getValue()); for(var i = 0; i < allTogether.length; i++){ if(allTogether[i].ID == id.value){ allTogether[i] = item; repaced = true; } } } if(!repaced){ allTogether.push(item); } sessionStorage.setItem('empDet', JSON.stringify(allTogether)); id.value = name.value = address.value = ""; } 

Démo mise à jour: http://jsfiddle.net/ashishanexpert/hu2V3/2/