Domanda

Voglio convertire una stringa che contiene 5 zeri ("00000") in un int, quindi può essere incrementato. Ogni volta che converto la stringa in un intero usando convert.toint32 (), il valore diventa 0. Come posso garantire che il numero intero rimanga a una lunghezza fissa una volta convertiti?

Voglio essere in grado di incrementare il valore da "00000" a "00001" e così via in modo che il valore venga visualizzato con tale cifra in un database anziché 0 o 1.

Se hai intenzione di votare la domanda, il minimo che potresti fare è lasciare un feedback sul perché l'hai fatto ...

È stato utile?

Soluzione

Un intero è un numero intero.Niente di più.

Quindi il int che hai ha valore zero, non c'è modo di aggiungere metadati "lunghezza" o simili.

Suppongo che cosa vuoi sia, quello - ad un certo punto - ci sarà di nuovo un string.Volete che string rappresenti il tuo numero, ma con 5 caratteri e azzerare zero.

È possibile ottenere questo utilizzo:

string s = i.ToString("00000")
.

Modifica

Dici che vuoi che i numeri appaiano così nel tuo DB. Chiediti:

ha davvero bisogno di essere così nel DB o è sufficiente formattare i numeri non appena li leggono dal database?

A seconda di ciò, formattarli (come mostrato sopra), quando si scrive o la lettura dal DB.Naturalmente, il primo caso richiederà più spazio di archiviazione e non è possibile utilizzare SQL o simili per eseguire operazioni aritmetiche!

Altri suggerimenti

Un numero intero non ha una lunghezza, è puramente un valore numerico.Se vuoi mantenere la lunghezza, devi memorizzare le informazioni sulla lunghezza da qualche altra parte.

È possibile avvolgere il valore in un oggetto che mantiene la lunghezza in una proprietà.Esempio:

public class FormattedInt {

  private int _value, _length;

  public FormattedInt(string source) {
    _length = source.Length;
    _value = Int32.Parse(source);
  }

  public void Increase() {
    _value++;
  }

  public override string ToString() {
    return _value.ToString(new String('0', _length));
  }

}
.

Uso:

FormattedInt i = new FormattedInt("0004");
i.Increase();
string s = i.ToString(); // 0005
.

Come dice Olydis sopra, un int è solo un numero.Non specifica il formato di visualizzazione .Non raccomando memorizzarlo imbottito con zero in un database.È un int, memorizzalo come int.

Per scopi di visualizzazione, nell'app, un report, qualsiasi cosa, quindi riempie gli zeri.

string s = i.ToString("00000");
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top