2011-08-03 25 views

Respuesta

14

La manera más fácil es correcta:

int.Parse(s).ToString(); 

Los métodos de acabado toda fallar por las entradas de "0000", que volverán una cadena vacía en lugar de la correcta "0".

+0

+1 tienes razón. Lo tomé porque la cuerda siempre es algo así como 0012, no 0000. No eliminarías un cero principal de 0000. A menos que quisieras que fuera 0, supongo. –

+1

Esto no funcionará en una variedad de casos: la cadena contiene caracteres alfabéticos, es una representación de cadena de un decimal, o es un entero que es mayor que 'Int32.MaxValue'. –

+0

@KirkBroadhurst: "ceros a la izquierda" es un término usado típicamente para cadenas de dígitos, y no incluye un cero en el lugar de la persona. Además, los datos de ejemplo en la pregunta solo tienen dígitos. –

19

Tome un vistazo a TrimStart:

numberString = numberString.TrimStart('0'); 

De MSDN:

El método TrimStart elimina de la cadena actual todos los personajes principales que se encuentran en el parámetro trimChars. La operación de recorte se detiene cuando se encuentra un carácter que no está en trimChars.

+0

1 se me adelantó. –

+1

+1 Mucho mejor que la otra respuesta que asume que el valor es un número entero; los valores podrían ser "0012ABC" o "00999999999999999999", y ambos fallarán con 'int.Parse'. –

+0

considere esta limitación (no sobre el tema, lo sé) 'System.String TrimStart (Char []) 'solo se admite en LINQ to Entities cuando no hay caracteres de recorte especificados como argumentos' –

2

Si esto es siempre con int, que sólo puede analizarlo:

abc = int.Parse(abc).ToString() 
1

var str = int.Parse(abc).ToString(); debe hacer el trabajo que pienso. Convierta el número a int, y luego simplemente conviértalo de nuevo a cadena.

+0

Mi voto aquí, porque también funciona con números negativos. Las soluciones que usan el método TrimStart fallarán en tal caso. –

+0

no tiene números negativos ... su cadena – nologo

+0

@nologo quiere decir que el método TrimStart no funcionará para cadenas como "-00123" –

1
var abc = "0023"; 
var zeroless = abc.TrimStart('0'); 

de salida: "23"

+0

No en el tema de OP, pero para las personas que lo encuentren en las búsquedas, considere esta limitación 'TrimStart': ' System.String TrimStart (Char []) 'solo se admite en LINQ to Entities cuando no hay caracteres de recorte especificados como argumentos ' –

1
 string some_string = "000045"; 
     string ur_desire = int.Parse(some_string).ToString(); 
     Console.WriteLine(ur_desire); 

thix ix la buena respuesta que pienso, ya que también trabaja con números negativos ..

Cuestiones relacionadas