por 'nvarchar datatype' Suponho que você queira dizer string.
Ray
E 'C £' significa 'C #' ...
T30
Respostas:
151
Realmente depende de quanto tempo o NVARCHAR é, pois alguns dos métodos acima (especialmente os que são convertidos através do IntXX) não funcionam:
String s ="005780327584329067506780657065786378061754654532164953264952469215462934562914562194562149516249516294563219437859043758430587066748932647329814687194673219673294677438907385032758065763278963247982360675680570678407806473296472036454612945621946";
Algo assim faria
String s ="0000058757843950000120465875468465874567456745674000004000".TrimStart(newChar[]{'0'});// s = "58757843950000120465875468465874567456745674000004000"
problemático quando strInput= "0000000";ou similar. porque retornará uma string vazia em vez de um zero.
Avrahamcool #
2
@avrahamcool, que pode ser manipulado observando o comprimento da corda e retornando simplesmente "0"se estiver vazio após o corte. Ou usando PadLeft(1, '0').
vamos supor que a string seja muito longa, por que apará-la duas vezes? você pode salvar a corda cortada em uma variável
avrahamcool
@avrahamcool, como assim, onde é aparado duas vezes? Obrigado pelo comentário.
msysmilu
ah, @avrahamcool, talvez seja por isso que eu editei :) no final, é uma questão de memória versus tempo de computação; eu acho que hoje a memória não é um problema mais nestes tipos de aplicações
problemático quando numberString= "0000000";ou similar
avrahamcool
1
@msysmilu porque retornará uma string vazia em vez de um zero.
avrahamcool
1
@avrahamcool Você está certo.
Portanto
5
TryParse funciona se seu número for menor que Int32.MaxValue . Isso também oferece a oportunidade de lidar com seqüências de caracteres mal formatadas. Funciona da mesma forma para Int64.MaxValue e Int64.TryParse .
int number;if(Int32.TryParse(nvarchar,out number)){// etc...
number.ToString();}
Talvez exagere na pergunta, essa é a solução que estou procurando, pois também permite a remoção de zeros à direita para decimais. (Decimal.TryParse)
winwaed
@JK Eu sei que o post é antigo, mas eu realmente gosto dessa solução, pois é limpa e muito fácil de entender. Apenas uma pergunta que altera o texto em um evento de pressionamento de tecla também dispara o evento de alteração de texto - estou correto?
Ken
3
Esse Regex permite evitar resultados errados com dígitos que consitem apenas dos zeros "0000" e trabalhar com dígitos de qualquer tamanho:
Embora esse código possa responder à pergunta, fornecer um contexto adicional sobre como e / ou por que resolve o problema melhoraria o valor a longo prazo da resposta.
precisa saber é o seguinte
Melhorada a resposta conforme sugestão de @ Nic3500
Respostas:
Realmente depende de quanto tempo o NVARCHAR é, pois alguns dos métodos acima (especialmente os que são convertidos através do IntXX) não funcionam:
Algo assim faria
fonte
strInput= "0000000";
ou similar. porque retornará uma string vazia em vez de um zero."0"
se estiver vazio após o corte. Ou usandoPadLeft(1, '0')
.Este é o código que você precisa:
fonte
strInput= "0000000";
ou similarstrInput.TrimStart('0').PadLeft(1, '0');
vai lidar"0000" > "0"
.Código para evitar retornar uma string vazia (quando a entrada é como "00000").
fonte
return numberString.TrimStart('0');
fonte
numberString= "0000000";
ou similarTryParse funciona se seu número for menor que Int32.MaxValue . Isso também oferece a oportunidade de lidar com seqüências de caracteres mal formatadas. Funciona da mesma forma para Int64.MaxValue e Int64.TryParse .
fonte
Esse Regex permite evitar resultados errados com dígitos que consitem apenas dos zeros "0000" e trabalhar com dígitos de qualquer tamanho:
E esse regex removerá os zeros à esquerda em qualquer lugar dentro da string:
fonte
Usar o seguinte retornará um único 0 quando a entrada for toda 0.
fonte
fonte