por 'nvarchar datatype' supongo que te refieres a string.
Ray
Y 'C £' significa 'C #' ...
T30
Respuestas:
151
Realmente depende de cuánto dura el NVARCHAR, ya que algunos de los métodos anteriores (especialmente los que se convierten a través de IntXX) no funcionarán para:
String s ="005780327584329067506780657065786378061754654532164953264952469215462934562914562194562149516249516294563219437859043758430587066748932647329814687194673219673294677438907385032758065763278963247982360675680570678407806473296472036454612945621946";
Algo como esto
String s ="0000058757843950000120465875468465874567456745674000004000".TrimStart(newChar[]{'0'});// s = "58757843950000120465875468465874567456745674000004000"
problemático cuando strInput= "0000000";o similar. porque devolverá una cadena vacía en lugar de un cero.
avrahamcool
2
@avrahamcool, que se puede manejar mirando la longitud de la cadena y simplemente regresando "0"si está vacía después del corte. O el uso PadLeft(1, '0').
@Emjay porque devolverá una cadena vacía en lugar de un cero.
avrahamcool
22
@avrahamcool todavía estaría haciendo exactamente lo que debería. Devolver un solo cero sería una excepción y debería ser manejado por el desarrollador.
supongamos que la cuerda es muy larga, ¿por qué cortarla dos veces? puede guardar la cadena recortada en una variable
avrahamcool
@avrahamcool, ¿qué quieres decir, dónde se recorta dos veces? Gracias por el comentario.
msysmilu
ah, @avrahamcool, tal vez por eso lo edité :) al final es una memoria de preguntas vs tiempo de cálculo; Supongo que hoy la memoria ya no es un problema en este tipo de aplicaciones
Tal vez exagere para la pregunta planteada, esta es la solución que estoy buscando, ya que también permite la eliminación de ceros a la derecha para decimales. (Decimal. TryParse)
winwaed
@JK Sé que la publicación es antigua, pero realmente me gusta esta solución, ya que es limpia y muy fácil de entender. Solo una pregunta que cambie el texto en un evento de pulsación de tecla también activará el evento de cambio de texto: ¿estoy en lo correcto?
Ken
3
Esta expresión regular le permite evitar resultados incorrectos con dígitos que consisten solo en ceros "0000" y funcionan en dígitos de cualquier longitud:
Si bien este código puede responder la pregunta, proporcionar un contexto adicional sobre cómo y / o por qué resuelve el problema mejoraría el valor a largo plazo de la respuesta.
Nic3500
Se mejoró la respuesta según la sugerencia de @ Nic3500
Respuestas:
Realmente depende de cuánto dura el NVARCHAR, ya que algunos de los métodos anteriores (especialmente los que se convierten a través de IntXX) no funcionarán para:
Algo como esto
fuente
strInput= "0000000";
o similar. porque devolverá una cadena vacía en lugar de un cero."0"
si está vacía después del corte. O el usoPadLeft(1, '0')
.Este es el código que necesitas:
fuente
strInput= "0000000";
o similarstrInput.TrimStart('0').PadLeft(1, '0');
se encargará"0000" > "0"
.Código para evitar devolver una cadena vacía (cuando la entrada es como "00000").
fuente
return numberString.TrimStart('0');
fuente
numberString= "0000000";
o similarTryParse funciona si su número es menor que Int32.MaxValue . Esto también le da la oportunidad de manejar cadenas mal formateadas. Funciona igual para Int64.MaxValue e Int64 . TryParse .
fuente
Esta expresión regular le permite evitar resultados incorrectos con dígitos que consisten solo en ceros "0000" y funcionan en dígitos de cualquier longitud:
Y esta expresión regular eliminará los ceros a la izquierda en cualquier lugar dentro de la cadena:
fuente
El uso de lo siguiente devolverá un solo 0 cuando la entrada sea todo 0.
fuente
fuente