Stringa valore numerico formato da N "0"

lunedì 29 agosto 2011 - 16.36
Tag Elenco Tags  C#  |  .NET 3.5  |  Windows 7  |  Visual Studio 2008

eddyG Profilo | Junior Member

Ciao a tutti!
io sto sviluppando un'applicazione e al suo interno è presente un contatore che mi serve poi alla fine per formare il contenuto di una textbox.
Tale contatore,però,non è formato da un valore numerico,bensì da un valore stringa composta da (Anno corrente/ n° 0/iniziali dell'utente)...esempio di valore finale(201100000xy)
il mio problema è dato dal fatto che,man mano che inserisco un nuovo record il contatore deve incrementararsi di una unità ma quando arriva a "10"-"100"-"1000" devo gesttire il numero di "0" tali che aumentando i record,gli 0 iniziali diminuiscano...

Per ora sono riuscito a gestire(secondo me non in modo ottimale)solo l'inserimento dei primi 9 record.

qualcuno saprebbe indicarmi la strada più breve/semplice per ovviare a questo problema?

Grazie anticipatamente

nico839 Profilo | Senior Member

ciao, cosi su due piedi mi viene in mente che potresti usare la funzione PadLeft()
http://msdn.microsoft.com/en-us/library/system.string.padleft(v=vs.71).aspx ,
cioè il contatore diventa "anno" & numerorecord.PadLeft(numero totale di caratteri,"0") & "iniziali utente", sempre se ho capito bene il tuo problema...


Ciao.
Nicolas

http://perledinico.blogspot.com

eddyG Profilo | Junior Member

Forse ho scritto troppo e mi sono spiegato male.
Te lo riduco in poche parole:
tra Anno corrente e iniziali utente è presente una serie di 0 che sono stati salvati come singla stringa;

Ora:se il numero di rercord inseriti è <10 e supponendo che la serie di 0 sia "00000" la stringa che poi aggancerò alle altre sarà "0000"+ n°Record;
il mio problema è se il N°Record è >10 ...N°record è una variabile Int...come faccio per esempio se N°Record è 15 a visualizzare 00015 e non 000015?

per i primi 9 record ho agito in questo modo:
Progressive = (Progressive.Substring(0, Progressive.Length - 1)) + value; (dove value =1;)

Cteniza Profilo | Guru

Metti una ToSTring("00000") codice a 5 cifre allineato a dx con zeri davanti.

nico839 Profilo | Senior Member

>Ora:se il numero di rercord inseriti è <10 e supponendo che
>la serie di 0 sia "00000" la stringa che poi aggancerò alle altre
>sarà "0000"+ n°Record;
>il mio problema è se il N°Record è >10 ...N°record è una variabile
>Int...come faccio per esempio se N°Record è 15 a visualizzare
>00015 e non 000015?

quindi il progressivo deve essere al max di 5 cifre composto da un numero intero più tanti "0" a sinistra fino ad essere lungo 5 caratteri, io farei :

Progressive = CStr(CInt(Progressive) + value).PadLeft(5, "0")

in questo modo qualunque sia il risultato di CInt(Progressive) + value inferiore ai 6 caratteri diventa una stringa composta da Progressive + tanti "0" a sinistra fino ad arrivare ai 6 caratteri, non so se sono stato abbastanza chiaro....

Ciao.
Nicolas

http://perledinico.blogspot.com

eddyG Profilo | Junior Member

Convert.ToString(Convert.ToInt16(Progressive) + value).PadLeft(5, Convert.ToChar(0))

è proprio quello che mi serve a me...mah,ho notato che come valore da visualizzare mi restituisce una cosa del tipo "0\0\000"
mi sapete dire come mai?...dato che io non gli ho mai implementato l'aggiunta della barra "\"?

Ho provato anche a fare uno split

string[] split = progressive.split(new char[]{ ' \' };
ma questa dicitura non me la accetta..... :-(

u235 Profilo | Junior Member

ciao, secondo me il suggerimento di usare padleft è corretto...
il 4 indica quante cifre devi usare (comprese di 0)
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

nico839 Profilo | Senior Member

>Convert.ToString(Convert.ToInt16(Progressive) + value).PadLeft(5,
>Convert.ToChar(0))
>
>è proprio quello che mi serve a me...mah,ho notato che come valore
>da visualizzare mi restituisce una cosa del tipo "0\0\000"
>mi sapete dire come mai?...dato che io non gli ho mai implementato
>l'aggiunta della barra "\"?
>
>Ho provato anche a fare uno split
>
>string[] split = progressive.split(new char[]{ ' \' };
>ma questa dicitura non me la accetta..... :-(
>

perchè Convert.ToChar(0) produce il carattere '\0', al posto di convert.tochar(0) utilizza '0' (apice zero apice) oppure Convert.toChar("0")
Ciao.
Nicolas

http://perledinico.blogspot.com

eddyG Profilo | Junior Member

Grazie mille di tutti gli aiuti che mi sono stati dati...FUNZIONA A MERAVIGLIA!!!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5