Pergunta

Quero converter uma string que contém 5 zeros ("00000") em um Int para que possa ser incrementada.Sempre que converto a string em um número inteiro usando Convert.ToInt32(), o valor se torna 0.Como posso garantir que o número inteiro permaneça com um comprimento fixo depois de convertido?

Quero poder incrementar o valor de "00000" para "00001" e assim por diante, para que o valor apareça com tantos dígitos em um banco de dados em vez de 0 ou 1.

Se você vai votar negativamente na questão, o mínimo que você pode fazer é deixar um feedback sobre por que você fez isso...

Foi útil?

Solução

Um número inteiro é um número inteiro.Nada mais.

Então o int você tem valor zero, não há como adicionar metadados de "comprimento" ou similares.

Acho que o que você realmente quer é que - em algum momento - haja um string de novo.Você quer isto string para representar o seu número, mas com 5 caracteres e zeros à esquerda.

Você pode conseguir isso usando:

string s = i.ToString("00000")

EDITAR

Você diz que deseja que os números apareçam assim no seu banco de dados.Pergunte a si mesmo:

Realmente precisa ser assim no banco de dados ou basta formatar os números assim que você os lê no banco de dados?

Dependendo disso, formate-os (conforme mostrado acima), seja ao gravar ou ler no banco de dados.Obviamente, o primeiro caso exigirá mais espaço de armazenamento e você não poderá usar SQL ou algo semelhante para realizar operações aritméticas!

Outras dicas

Um número inteiro não tem comprimento, é puramente um valor numérico.Se quiser manter o comprimento, você deverá armazenar as informações sobre o comprimento em outro lugar.

Você pode agrupar o valor em um objeto que mantém o comprimento em uma propriedade.Exemplo:

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

Como olydis diz acima, um int é apenas um número.Não especifica o formato de apresentação.Também não recomendo armazená-lo preenchido com zeros em um banco de dados.É um int, armazene-o como um int.

Para fins de exibição, no aplicativo, um relatório, qualquer que seja, preencha os zeros.

string s = i.ToString("00000");
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top