Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# [Résolu] Manipulation de chaine de caractères, incrémenter une Référence simplement ?

Envoyé par : Raphael

Date : 29/10/2007 15:16

Bonjour, mon problème ne relève pas à proprement parler de XUL mais plutôt d'un petit problème de JS qui n'est somme toute pas très difficile mais qui m'énerve un peu car je ne connais pas bien l'étendue des fonctions JS à ma disposition pour faire ce travail.

Voici mon problème : Je voudrais "aider" à la saisie de la référence d'un objet en me basant sur le précédent objet rentré selon ce modèle :

  • Référénce à ma disposition du type : XX...XX001, XX...XX002, ..., XX...XX256

Je voudrais pouvoir proposer la référence suivante donc par exemple :

  • STON-EN057 en STON-EN058
  • LOB-099 en LOB-100
  • etc...

Voilà le bout de code que j'ai commencé :

var Ref = last_card["Reference"];
var New_Ref = Ref.substring(0, Ref.length - 3);
var New_Ref_Number = parseInt(Ref.substring(Ref.length - 3, Ref.length)) + 1;
New_Ref += New_Ref_Number;

Le problème là est que ça me transforme 002 en 3 et non 003.

J'ai essayé de bidouiller un truc :

var Ref = last_card["Reference"];
var New_Ref = Ref.substring(0, Ref.length - 3);
var Ref_Number = parseInt(Ref.substring(Ref.length - 3, Ref.length));
var New_Ref_Number = Ref_Number + 1;
New_Ref_Number += "";
var Temp = "";
for (var i = 0 ; i < (3-New_Ref_Number.length) ; i++) {
 Temp += "0";
}
New_Ref += Temp + New_Ref_Number;

Là, ça marche pour 004 en 005...

Mais ça ma transforme 017 en 016... ? Je recule, je comprends pas trop pourquoi...

Est-ce que quelqu'un saurait pourquoi ? ou bien existe-t-il des fonctions plus adaptées à mon problème ?

Merci d'avance.

# Re: Manipulation de chaine de caractères, incrémenter une Référence simplement ?

Envoyé par : hhf

Date : 29/10/2007 20:20

Qd tu va connaitre la solution , tu vas etre degouté... LOL Donc de memoire :

parseInt("17") retourne bien 17 car parseInt("17", 10) mais
parseInt("017") retourne 15 car qd ca commence par "0", il considere que c'est de l'octal...
Donc normalement, si tu precise la base 10, tout devrait rentrer dans l'ordre....

  var Ref_Number = parseInt(Ref.substr(-3), 10);
  Ref_Number++;

sinon pour combler avec les zeros :

 while(Ref_Number.length<3) Ref_Number="0"+Ref_Number;

# Re: Manipulation de chaine de caractères, incrémenter une Référence simplement ?

Envoyé par : Raphael

Date : 30/10/2007 08:55

Génial, merci énormément, ça marche au poil !

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.